リダイレクトuriが「urn:ietf:wg:oauth:2.0:oob」のときにOAuth 2.0経由で認証できますが、コードをコピーしてから、1つのアクティビティに戻ってフィールドに貼り付けます。私はその経験をそれよりもエレガントにしたい。リダイレクトuriが "http:// localhost"である場合(アクセスコードが返されても)、私はAPIにアクセストークンを交換することができません。Oauth 2がアクセストークンのコードを交換するのに失敗した場合、「invalid_grant」を返します
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
0);
nameValuePairs.add(new BasicNameValuePair("client_id",
OAuth2ClientCredentialsMark1.CLIENT_ID));
nameValuePairs.add(new BasicNameValuePair("client_secret",
OAuth2ClientCredentialsMark1.CLIENT_SECRET));
nameValuePairs.add(new BasicNameValuePair("code", accessCode));
nameValuePairs.add(new BasicNameValuePair("grant_type",
"authorization_code"));
nameValuePairs.add(new BasicNameValuePair("redirect_uri",
OAuth2ClientCredentialsMark1.REDIRECT_URI));
//"http://localhost"
String url = "https://accounts.google.com/o/oauth2/token";
//url += URLEncodedUtils.format(nameValuePairs, "utf-8");
Log.d("print", url);
HttpPost hPost = new HttpPost(
url);
hPost.setHeader("content-type", "application/x-www-form-urlencoded");
hPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
このコードでは常に{"error": "invalid_grant"}が返されます。
マイアプリはhttps://github.com/ddewaele/LatitudeOAuth2Sample @サンプルのベースとしており、私はあなたのコードが正しいと思われhttp://code.google.com/apis/accounts/docs/OAuth2InstalledApp.html
私は同じ問題があります。 JavaではなくScalaを使用しますが、それ以外は同じです。私はリダイレクトURIとしてhttp:// localhost:9000を使用します。 – Magnus
私は、インストールされたアプリケーションのOAuthで同じ問題に直面しています。あなたは問題を解決しましたか?コメントしてください。 – Khushboo