web-dev-qa-db-ja.com

OAuth v2(Google API)有効期限アクセストークン

ビルド済みのOAuth2コネクタを備えたグラフィカルフレームワークを使用して統合コンポーネントを構築しています。このフレームワークには、OAuth v2の以下のフィールドが必要です。

  • 助成金の種類
  • 範囲
  • 認証サーバーのURL
  • クライアントID
  • クライアントシークレット
  • アクセストークン
  • トークンを更新

Google Analytics APIからデータを取得する必要があるため、Google Dev Consoleに行きました( https://console.developers.google.com/project/927890000889/apiui/credential )。 「WebアプリケーションのクライアントID」を生成しました。このオブジェクトのパラメータから、上記のパラメータのいくつかを入力することができました

  • 付与タイプ:「authorization_code」
  • クライアントID:「RANDOMCHARSam5o37nsiu730d.apps.googleusercontent.com」
  • クライアントシークレット: 'RANDOMCHARSiSwBA5OH5qYLUa'

次に、Google Oauth Playground( https://developers.google.com/oauthplayground )を使用して、不足しているビットを埋めることができました

すべてが正常に機能し、アクセスする権限があり、Googleアナリティクスからデータを取得しますが、しばらくすると、数分後に再試行すると、承認失敗エラーが表示されます。問題はアクセストークンの期限切れに関連していると思いますが、それを解決する方法がわかりません。このアクティビティはバッチ(人間の操作なし)であるため、だれも新しいアクセストークンを要求できないことは言うまでもありません。統合フレームワークは拡張可能ではないため(コードを更新するコードを記述できません)、有効期限が切れないアクセストークンを取得する方法、または同じ結果を達成するためのその他のメカニズムがあると思います。

結論として、最初から要件に適切に取り組んだかどうかはわかりません(WebアプリケーションのクライアントID)。

どんな助けも大歓迎です、ジョバンニ

10

通常、アクセストークンは60分後に期限切れになります。更新トークンがある場合は、更新トークンを使用して新しい(有効な)アクセストークンを取得できます。

このドキュメントでは、その方法について説明しています。
https://developers.google.com/accounts/docs/OAuth2WebServer#refresh

あなたの包括的な質問に答えるために、はい、あなたはすべてに正しくアプローチしています。アクセストークンを更新して期限切れになった場合に対処するだけです。また、最初にアクセストークンを要求したとき、応答にはトークンの有効期間が示されているため、トークンが期限切れの場合にのみ、トークンを更新する必要があります。

22
Philip Walton

更新トークンを使用して、より長く使用することができます。 Google Authサーバーが発行した更新トークンが期限切れになることはありません。次のいずれかの理由でトークンが機能しなくなる可能性があります:ユーザーがアクセスを取り消した。トークンは6か月間使用されていません。ユーザーがパスワードを変更し、トークンにGmailスコープが含まれています。ユーザーアカウントが特定の数のトークン要求を超えました。現在、クライアントごとのユーザーアカウントごとに50の更新トークンの制限があります。制限に達した場合、新しいトークンを作成すると、警告なしに最も古いトークンが自動的に無効になります。この制限はサービスアカウントには適用されません。

から: https://developers.google.com/identity/protocols/OAuth2

2
Haryono