3

Google Oauth v2 を使用しようとしています。API コンソールに移動し、次の 2 つのリダイレクト uris を設定します...

http://localhost:3000/auth/authenticate
http://localhost:3000/auth/google/getToken

以下を実行すると...

curl -d "code=<removed>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fgoogle%2fgetToken&client_id=<removed>&client_secret=<removed>&grant_type=authorization_code" -X POST https://accounts.google.com/o/oauth2/token

すべてがうまく機能しますが、

curl -d "code=<removed>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fauthenticate&client_id=<removed>&client_secret=<removed>&grant_type=authorization_code" -X POST https://accounts.google.com/o/oauth2/token

と言って失敗...

"error" : "redirect_uri_mismatch"

これを変更したばかりですが、伝播時間枠はありますか? 両方の URI を機能させるにはどうすればよいですか?

4

3 に答える 3

8

ここで説明するように、redirect_uriを2回送信するときは、検証のために送信します(一致する必要があります)。これは任意の値ではありません。アクセストークンを要求するときに、redirect_uriに同じ値を渡して、承認後にユーザーにリダイレクトするように要求したredirect_uriの値に渡す必要があります。それ以外の場合、google(または他のプロバイダーはエラーメッセージを生成します)。

于 2012-08-22T00:28:51.900 に答える
1

アプリは複数の redirect_uri 値を持つことができます。ただし、最初の承認リクエスト (ユーザーがリダイレクトされる場所) で使用されるものと同じ redirect_uri をトークン リクエストで使用する必要があります。単一の承認で uris を変更すると、そのエラーで失敗します。

于 2012-08-21T23:56:57.323 に答える