クライアント側アプリから取得した OAuth の 1 回限りの使用コードを、サーバー上のアクセス トークンとリフレッシュ トークンに交換しようとしています。私が得る応答は次のとおりです。
{
"error" : "redirect_uri_mismatch"
}
私の POST リクエストは次のとおりです。
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
code={My Code}&
client_id={My Client ID}&
client_secret={My Client Secret}&
grant_type=authorization_code
クライアント ID とクライアント シークレットを API コンソールのクライアント ID と照合して確認しましたが、一致しています。
次の Java コードを使用して、クライアントで 1 回限りのコードを取得します。
static final List<String> SCOPES = Arrays.asList(new String[]{"https://www.googleapis.com/auth/plus.login","https://www.googleapis.com/auth/userinfo.email"});
String scope = String.format("oauth2:server:client_id:%s:api_scope:%s", SERVER_CLIENT_ID, TextUtils.join(" ", SCOPES));
final String token = GoogleAuthUtil.getToken(c, email, scope);
API コンソールに redirect_uri がありますが、(ここで説明されているように) クロスクライアント認証を使用しようとしているため、必要に応じて意図的に POST リクエストから除外しました。
コードをトークンに交換するときは、POST に「redirect_uri」引数を含めないでください。
私が間違っていることについて何か考えはありますか?