Грег,
Если вы уже используете библиотеку gdata-python-client, это относительно легко сделать, если вы единственный пользователь, которому ваше приложение будет авторизовать.
Общие механизмы подробно описаны в сообщении в блоге в сентябре. 2011, но я опишу их здесь для полноты картины.
Часть 1. Перейдите в консоль API и запустите новый проект.
Часть 2. В проекте перейдите в раздел "Сервисы" и включите "Analytics API".
Часть 3. В проекте перейдите в раздел "Доступ к API" и нажмите "Создать идентификатор клиента OAuth 2.0..." (вам потребуется указать название продукта, хотя указанное вами значение имеет преимущество). не важно). Когда вас спросят о типе приложения, выберите «Установленное приложение», а затем «Создать идентификатор клиента». Поскольку вы будете единственным пользователем, вам понадобится только один токен обновления, и вы можете получить его, авторизовавшись из настольного приложения один раз.
Часть 4. Получите идентификатор клиента и секрет клиента из консоли API, а затем создайте пустой токен:
import gdata.gauth
CLIENT_ID = 'id-from-apis-console'
CLIENT_SECRET = 'secret-from-apis-console'
SCOPE = 'https://www.google.com/analytics/feeds/' # Default scope for analytics
token = gdata.gauth.OAuth2Token(
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
scope=SCOPE,
user_agent='application-name-goes-here')
Я получил область из часто задаваемых вопросов по GData, хотя я не уверен, что она верна.
Часть 5. Используйте токен для создания URL-адреса авторизации для посещения:
url = token.generate_authorize_url(redirect_uri='urn:ietf:wg:oauth:2.0:oob')
Поскольку ваше приложение является «установленным приложением», ваш URI перенаправления по умолчанию — 'urn:ietf:wg:oauth:2.0:oob'
. (Также обратите внимание, что в сообщении блога была опечатка и использовался ключевой аргумент redirect_url
.)
Часть 6. Посетите URL-адрес и разрешите приложению отправлять запросы от имени вашей учетной записи. После авторизации вы будете перенаправлены на страницу с кодом. Этот код будет использоваться для обмена на токен доступа и долгоживущий токен обновления. Код имеет срок действия 10 минут, а токен доступа — час. Токен обновления позволит вам получать новые токены доступа для подписания запросов на неопределенный срок (или до тех пор, пока вы отзовете разрешение из своего аккаунта).
Часть 7. Используйте код для получения токена доступа:
code = 'random-string-from-redirected-page'
token.get_access_token(code) # This returns the token, but also changes the state
Это снова немного отличается от сообщения в блоге, потому что мы используем установленное приложение.
Часть 8. Теперь с помощью токена вы можете делать все запросы, которые хотите сделать, к клиенту аналитики:
import gdata.analytics.client
client = gdata.analytics.client.AnalyticsClient()
token.authorize(client)
Вот это большие деньги. По истечении срока действия токена доступа запросы API, подписанные этим токеном, отклоняются. Однако при авторизации клиента, как указано выше, при сбое указанных запросов token
пытается использовать токен обновления для получения нового токена доступа. Если он успешно получает новый токен доступа, клиент повторно отправляет исходный запрос API, подписанный новым токеном доступа.
Я ничего не знаю об Analytics API, поэтому я не буду предоставлять больше подробностей.
Примечание 1 по использованию в будущем. Сохранение информации для использования в будущем. Вы можете повторно использовать это из разных мест и после этого использовать очень легко. Существуют методы с именами token_to_blob
и token_from_blob
, предоставляемые библиотекой, которые позволяют превратить токен в строку и преобразовать из строки:
saved_blob_string = gdata.gauth.token_to_blob(token)
Сделав это, вы можете сохранить строку в файле и завершить запущенный процесс Python. Когда вы захотите использовать его снова:
saved_blob_string = retrieve_string_from_file() # You'll need to implement this
token = gdata.gauth.token_from_blob(saved_blob_string)
Примечание 2 по будущему использованию. Этот токен можно будет использовать для авторизации клиента и выполнения всех ваших действий снова и снова, пока у вас есть токен обновления. Если по какой-то причине вы хотите снова получить токен доступа без вызова token.generate_authorize_url
, вам нужно будет вручную установить это для объекта:
token.redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'
Примечание 3 по использованию в будущем. Кроме того, если вы потеряли токен обновления и хотели бы получить новый, не открывая браузер, на отозвать оригинал, вы можете использовать параметр approval_prompt
, чтобы получить новый токен обновления, посетив URL-адрес, созданный:
url = token.generate_authorize_url(
redirect_uri='urn:ietf:wg:oauth:2.0:oob',
approval_prompt='force')
person
bossylobster
schedule
21.04.2012