1. ホーム
  2. gdata

[解決済み】Google OAuthのリフレッシュトークンを受け取れない

2022-03-27 08:36:10

質問

Googleからアクセストークンを取得したいのですが、どうすればよいですか? Google APIでは アクセストークンを取得するには、トークン生成ページにコードとその他のパラメータを送信すると、以下のようなJSONオブジェクトが応答します。

{
"access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74"
}

しかし、リフレッシュトークンを受け取ることができません。 私の場合のレスポンスは

{
 "access_token" : "ya29.sddsdsdsdsds_h9v_nF0IR7XcwDK8XFB2EbvtxmgvB-4oZ8oU",
"token_type" : "Bearer",
"expires_in" : 3600
}

解決方法は?

その refresh_token は、ユーザーからの最初の認証のときのみ提供されます。 OAuth2 の統合をテストしているときに行うような、それ以後の認証では refresh_token 再び)

  1. アカウントにアクセスできるAppsを表示するページに移動します。 https://myaccount.google.com/u/0/permissions .
  2. サードパーティアプリのメニューで、アプリを選択します。
  3. Remove accessをクリックし、Okをクリックして確認します。
  4. 次に行う OAuth2 リクエストは refresh_token (ただし、クエリパラメータ 'access_type=offline' を含んでいることが条件です。

または、クエリパラメータを追加することもできます。 prompt=consent&access_type=offline を OAuth リダイレクトに追加します (Google の ウェブサーバアプリケーション向けOAuth 2.0 のページ)をご覧ください。

これにより、アプリケーションの再認証をユーザーに促し、常に refresh_token .