Я пытаюсь написать приложение Django, которое создает события в определенном календаре Google.До сих пор я был успешным.Есть только небольшая проблема:
Я не знаю, как получить токен обновления с клиентом Google Python.
В результате после истечения срока действия моего токенаприложение не работает, и я должен создать новый токен.Если я правильно понимаю документацию, вот тут-то и появляется токен обновления .
Токены доступа имеют ограниченный срок действия, и в некоторых случаях приложению требуется доступ к API Google за пределамивремя жизни одного токена доступа.В этом случае ваше приложение может получить то, что называется токеном обновления.Токен обновления позволяет вашему приложению получать новые токены доступа.
Документация Google (см. «Основные действия», раздел 4)
Мой код
import gflags
import httplib2
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run
FLAGS = gflags.FLAGS
FLOW = OAuth2WebServerFlow(
client_id=GOOGLE_API_CLIENT_ID,
client_secret=GOOGLE_API_CLIENT_SECRET,
scope=GOOGLE_API_CALENDAR_SCOPE,
user_agent=GOOGLE_API_USER_AGENT)
storage = Storage(GOOGLE_API_CREDENTIAL_PATH)
credentials = storage.get()
if credentials is None or credentials.invalid == True:
credentials = run(FLOW, storage)
http = httplib2.Http()
http = credentials.authorize(http)
service = build(serviceName='calendar', version='v3', http=http,
developerKey=GOOGLE_API_DEVELOPER_KEY)
event = {
[... Dictionary with all the necessary data here ...]
}
created_event = service.events().insert(calendarId=GOOGLE_API_CALENDAR_ID, body=event).execute()
Это в значительной степени пример из документации Google.Интересным является Storage .Это файл, в котором сохраняются некоторые учетные данные.
Содержимое файла моего хранилища:
{
"_module": "oauth2client.client",
"_class": "OAuth2Credentials",
"access_token": [redacted],
"token_uri": "https://accounts.google.com/o/oauth2/token",
"invalid": true,
"client_id": [redacted],
"client_secret": [redacted],
"token_expiry": "2011-12-17T16:44:15Z",
"refresh_token": null,
"user_agent": [redacted]
}
Там должен быть токен обновления , но вместо этого он нуль .Поэтому я полагаю, что могу каким-то образом запросить токен обновления .
. Буду признателен за любую помощь в том, как заставить это работать.Если вам нужна дополнительная информация, пожалуйста, скажите мне.