特定の Google カレンダーでイベントを作成する Django アプリを作成しようとしています。これまでのところ、私は成功しています。少しだけ問題があります:
Google python クライアントでリフレッシュ トークンを取得する方法がわかりません。
その結果、トークンの有効期限が切れるとアプリが機能しなくなり、新しいトークンを作成する必要があります。ドキュメントが正しいことを理解していれば、そこに更新トークンが入ります。
アクセス トークンの有効期間は限られており、場合によっては、アプリケーションが 1 つのアクセス トークンの有効期間を超えて Google API にアクセスする必要があります。この場合、アプリケーションはリフレッシュ トークンと呼ばれるものを取得できます。リフレッシュ トークンを使用すると、アプリケーションで新しいアクセス トークンを取得できます。
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]
}
そこに更新トークンがあるはずですが、代わりにnullです。だから私はどういうわけか更新トークンを要求できると思います。
これを機能させる方法について何か助けていただければ幸いです。さらに情報が必要な場合は、教えてください。