3

XMPPのgoogle認証のアクセストークン&リフレッシュトークンの取得方法。認証コードは正常に取得できましたが、アクセス トークンとリフレッシュ トークンを取得する必要があります。しかし、下のコードを使用して Android でリクエストを行うと、応答が返されます: { "error":"invalid_request" }

HttpPost request = new HttpPost("https://accounts.google.com/o/oauth2/token" );         
json.put("client_id", "128232338269.apps.googleusercontent.com" );
json.put("client_secret", "eufZ8Rmjsk1MaADYsHYW" );
json.put("redirect_uri", "urn:ieadsdg:oauth:2.0:oob");
json.put("code", res_code);
json.put("grant_type", "authorization_code");

StringEntity se = new StringEntity(json.toString());

Log.i(TAG, "JSON********" +json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
request.setEntity(se);

/* Checking response */  
response = client.execute(request); 

しかし、そのコードに対してこのエラーが発生しています。Response = { "error" : "invalid_request" }

ここで何が問題なのですか。この URL では HttpPost メソッドが正しいです。

4

1 に答える 1

3

チャットの後、どこに問題があるかを見つけました。ペイロードが正しくなく、コンテンツ タイプが正しく設定されていません。次のコードが解決策です。

    HttpClient client = new DefaultHttpClient();
    HttpPost request = new HttpPost("https://accounts.google.com/o/oauth2/token" );
    request.setHeader("Content-type", "application/x-www-form-urlencoded");

    //Please make this custom with you're credentials
    String requestBody = "code=123123132&client_secret=eufFgyAZ8Rmjsk1MaADYsHYW&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code&client_id=128169428269.apps.googleusercontent.com";

    try {
        request.setEntity(new StringEntity(requestBody));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }

    /* Checking response */
    try {
        HttpResponse response = client.execute(request);
        String results = "ERROR";
        results = EntityUtils.toString(response.getEntity());
        Log.d("STACK", "Response::" + results);
    } catch (IOException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
于 2013-03-14T11:02:31.637 に答える