2016-12-05 6 views
1

auth_codeのaccess_tokenおよびrefresh_tokenを取得するには、oauthにScribeを使用しています。最初の認証にはうまくいきました。 アプリケーションでクレデンシャルを無効にすると、アプリケーションにGmailに接続されたアプリケーションでトークンが引き続き存在します。 oauthを再度有効にすると、新しいauth_codeに有効な新しいaccess_tokenしか得られません。しかし、refresh_tokenはnullです。 oauthplaygroundと同じものを複製しようとしましたが、有効な更新とアクセストークンが表示されますが、遊び場トークンはまだGoogleの接続アプリに存在していました。Oauthを使用して電子メールを送信するためのGmail APIの再認証時にrefresh_tokenをnullにする

ここで私はここで、スクライブ-1.3.0 API

OAuthRequest oAuthRequest = new OAuthRequest(Verb.POST, "https://accounts.google.com/o/oauth2/token"); 

    oAuthRequest.addBodyParameter("client_id", SMTP_OAUTH_CLIENT_ID); 
    oAuthRequest.addBodyParameter("client_secret", SMTP_OAUTH_CLIENT_SECRET); 

    oAuthRequest.addBodyParameter("scope", scope); 
    oAuthRequest.addBodyParameter("redirect_uri", GoogleApi.getRedirectURL()); 

    oAuthRequest.addBodyParameter("code", authCode); 
    oAuthRequest.addBodyParameter("grant_type", "authorization_code"); 

    Response response = oAuthRequest.send(); 

で実装コードがあるが、結果はまだ同じである、googleapi-クライアント1.20で試してみました同様のコードです。

 GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
       new NetHttpTransport(), 
       new JacksonFactory(), 
       SMTP_OAUTH_CLIENT_ID, SMTP_OAUTH_CLIENT_SECRET, 
       authCode, 
       GoogleApi.getRedirectURL()) 
        .execute(); 

     Credential gcredential = new GoogleCredential 
       .Builder() 
       .setTransport(new NetHttpTransport.Builder().build()) 
       .setJsonFactory(new JacksonFactory()) 
       .setClientSecrets(SMTP_OAUTH_CLIENT_ID, SMTP_OAUTH_CLIENT_SECRET) 
       .build() 
       .setFromTokenResponse(tokenResponse); 

     gcredential.refreshToken(); 

     System.out.println(gcredential.getRefreshToken()); 

私が間違っている場所に誰かを助けることができますか? この問題を確認していただきありがとうございます。

答えて

関連する問題