5

背景

  1. google-api-python-client django_sampleを使用して Google API への access_token を取得しました。
  2. オフラインでアクセスできるように、 を追加しましFLOW.params['access_type'] = 'offline'た。
  3. 保存されますcredentials_json = credentials.to_json()。が含まれていrefresh_tokenます。
  4. 資格情報を復元しましたCredentials.new_from_json(credentials_json)
  5. この資格情報を使用して、 によるアクセスを取得しましたcredentials.authorize(http)
  6. 完璧に機能しました=)

問題

  1. 5分ごとに同じことをしました。
  2. 各反復で、資格情報を保存して印刷しました。
  3. 1 時間 45 分後、「refresh_token」が null になりました。
  4. この時点で、コードは機能しなくなりました =(

私の質問

  1. Credentialsクラスはトークンを自動的に更新しますか?
  2. そうでない場合、どの時点で電話する必要がありますcredentials.refresh(http)か?

ありがとう!

4

1 に答える 1

7

アクセス トークンの有効期限が切れるたびに、更新トークンを使用して新しいアクセス トークンが取得されます。

ここでgoogle は、有効期限が切れると、アクセス トークンは更新トークンを使用して自動的に更新されると述べています。

このアプリケーションではcredentials.refresh(http)、トークンの有効期限が近づいたときに呼び出します

if (credentials.token_expiry - datetime.utcnow()) < timedelta(minutes=refresh_mins): credentials.refresh(httplib2.Http())

refresh_mins私たちのコードベースでは、デフォルト値は 15 です。これは、アクセス トークンが 60 分で期限切れになるためです。45 分ごとに更新されます。詳細については、こちらを参照してください

于 2014-09-22T06:17:52.897 に答える