2016-11-03 10 views
-1

私は数ヶ月前にGitHubに「完了」した小さなGoogle App Engineプロジェクトを持っています。Google OAuth 2.0アクセストークンリクエストエラー

これまでのところ(最後の使用は2〜3か月前でしたが)、Googleが何か変わったように見えますが、実際の問題点と解決方法はわかりません。

問題は、このファイル(行59)である: File

コード:

public class TokenManager { 

static private final String TOKEN_URL = "https://www.googleapis.com/oauth2/v3/token"; 
static private final String ENC = "UTF-8"; 

private String _refreshToken; 
private String _clientId; 
private String _clientSecret; 

private final Gson _gson = new Gson(); 
private TokenData _tokenData = new TokenData(); 

... 

private void refreshAccessToken() throws Exception { 
    String payload = "client_secret=$client_secret&grant_type=refresh_token&refresh_token=$refresh_token&client_id=$client_id"; 
    payload = payload.replace("$client_secret", URLEncoder.encode(_clientSecret, ENC)); 
    payload = payload.replace("$refresh_token", URLEncoder.encode(_refreshToken, ENC)); 
    payload = payload.replace("$client_id", URLEncoder.encode(_clientId, ENC)); 

    HTTPRequest request = new HTTPRequest(new URL(TOKEN_URL), HTTPMethod.POST); 
    request.setPayload(payload.getBytes(ENC)); 

    String stringData = new String(URLFetchServiceFactory.getURLFetchService().fetch(request).getContent(), ENC); 

    _tokenData = _gson.fromJson(stringData, TokenData.class); 
} 

}

問題がアクセストークン要求周りあります。 (私はオフラインリフレッシュトークンを使用しています。)

応答はこれです:

{ 
    "error": "invalid_grant", 
    "error_description": "Bad Request", 
    "error_uri": "" 
} 
  1. 私が「https://www.googleapis.com/oauth2/v4/token
  2. TOKEN_URLを変更しようとした私は、新しいリフレッシュトークンを生成しようとしました。
  3. 新しいOAuthクライアントIDを作成しようとしました。

すべての試みに同じ問題がありました。

何が悪いと思いますか?

ありがとうございました!

+0

あなたのコードを投稿してください。 – mjs

+0

準備完了。申し訳ありません、ポストはコードスニペットなしでより透明に見えましたが、私はそれを修正しました。 – apost

答えて

0

問題が見つかりました。

おそらく私の以前のリフレッシュトークンが期限切れになっていた可能性があります。私は を新しく生成しようとしましたが、私はそのプロセスを誤解しました。私はリフレッシュトークンとして "code" パラメータを考えました。

https://developers.google.com/identity/protocols/OAuth2WebServer#offline