2012-04-10 19 views
2

google contacts API version 3.0に接続するためにoauth2(node.jsとconnect-oauthライブラリ)を使用しています。Google連絡先APIバージョン3.0でoauth2を使用してリフレッシュトークンを取得する

はそう、私は、次のような応答を得る:私はトークンとすぐに、後者は有効期限が切れているように、新しいアクセス権を取得するために使用されたリフレッシュトークンをしないのです

{ 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 } } 

ポスト本体用

オプション 「REDIRECT_URI =のhttp%3A%2F%2Flocalhost%2Foauth2callback & grant_type = authorization_code & CLIENT_ID = CLIENTID & client_secret = CLIENTSECRET &タイプ= WEB_SERVER &コード= 4 %2F3gbiESZTEOjiyFPLUhKfE_a_jr8Q '

注:からapproval_prompt = forceをrequest-post_bodyに追加しようとしましたが、これによってあなたがトークンを頼むときのnエラー

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

答えて

2

NOTE: I tried to add approval_prompt=force from a similar question to the request-post_body but this resulted in an Error

あなたがapproval_promptのparamを必要としません。 * approval_prompt * paramは認可パート用です。


I am missing the refresh token...

あなたは* *の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を取得している場合は、無効なパラメータを追加または1つが欠けているためです。

幸運を祈る!

+0

回答ありがとうございます。残念ながらそれはどちらもうまくいきません。 {statusCode:400、data: '{"エラー": "invalid_request"}'}というエラーが表示されます。 – forste

0

私はこれを試していました - 私はアプリからGoogleの認証トークンを削除しました - それで別のものを取得しようとしましたが、リフレッシュトークンはありませんでした。

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

+0

Googleはリフレッシュトークンを1回だけ提供します。最初の認証後、アクセストークンのみが取得されます。新しいリフレッシュトークンは、https://accounts.google.com/b/0/IssuedAuthSubTokensにアクセスし、最初から認証順序を開始してアクセス権を削除した場合に利用できます。 – HardScale

関連する問題