2

oauth2 (node.js およびconnect-oauthライブラリ) を使用して、Google 連絡先 API バージョン 3.0に接続しています。

すると、次のような応答が返ってきます。

{ access_token : "...",
"token_typen": "Bearer",
"expires_in" : 3600,
"id_token": "..." }

後者の有効期限が切れるとすぐに、新しいアクセス トークンを取得するために使用される更新トークンがありません。

oauth2 のオプション

{ host: 'accounts.google.com',
  port: 443,
  path: '/o/oauth2/token',
  method: 'POST',
  headers: 
   { 'Content-Type': 'application/x-www-form-urlencoded',
     Host: 'accounts.google.com',
     'Content-Length': 247 } }

post-body 'redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback&grant_type=authorization_code&client_id=CLIENTID&client_secret=CLIENTSECRET&type=web_server&code=4%2F3gbiESZTEOjiyFPLUhKfE_a_jr8Q'

注:同様の質問から request-post_body に approval_prompt=force を追加しようとしましたが、これによりエラーが発生しました

{ statusCode: 400, data: '{\n  "error" : "invalid_request"\n}' }
4

2 に答える 2

2

注: 同様の質問から request-post_body に approval_prompt=force を追加しようとしましたが、これによりエラーが発生しました

approval_promptトークンを要求する場合、パラメーターは必要ありません。*approval_prompt* パラメータは承認部分用です。


更新トークンがありません...

*refresh_token* を取得しない唯一の方法は次の場合です。

access_type=offlineしたがって、:を認証コード リクエストに追加してみてください。

編集

すなわち:

https://accounts.google.com/o/oauth2/auth?client_id=**your_client_id**&scope=https://www.googleapis.com/auth/plus.me&redirect_uri=http://localhost&response_type=code&access_type=offline

取得して400いる場合は、無効なパラメーターを追加しているか、パラメーターが欠落していることが原因です。

幸運を!

于 2012-04-13T16:19:26.687 に答える
0

これを行ったのはテストでした-アプリからGoogle認証トークンを削除したため、別の認証トークンを取得しようとしましたが、更新トークンがありませんでした。

したがって、テストしているアプリが、テストしているアカウントに対して承認されていないことを確認してください (意味がありますか?)

于 2014-01-13T20:18:15.627 に答える