web-dev-qa-db-ja.com

Google OAuth 2.0 "error": "redirect_uri_mismatch"

私はすでに1日を過ごし、1枚のガラスをクラッシュさせ、それに対して本当に怒っています。Googleが私に何を望んでいるのか、何が間違っているのか分かりません。

開発者コンソールでGoogle+ APIを有効にしました google_ api enabled 、新規作成OAuthクライアントID client id

    $ch = curl_init('https://accounts.google.com/o/oauth2/token');
curl_setopt($ch,CURLOPT_POSTFIELDS,'code=4%2FPp1GWqC6PIr3wNYrZ5kK4T9oitxBoo0fBqBrVNQfE-g.ElKDUjQ7E28SoiIBeO6P2m-0RPaolgI&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fmyprivatedomain.local.com%2Foauth2callback&client_id=%mycliet_id%&client_secret=%mysecret%');
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
var_dump(curl_exec($ch));

次の手順のようにすべて作成されます: https://developers.google.com/+/web/signin/server-side-flow 、ページにgplusボタンが表示され、許可ユーザーのアクセスを正常に要求します。ただし、ステップ8を作成した場合ステップ8:Google APIクライアントライブラリを初期化し、Google +サービスを開始します応答を取得するたびにリクエスト "error": "redirect_uri_mismatch"

Googleコンソールにredirect_uriを登録していない場合、またはタイプミスをした場合にこのエラーが表示されることは知っていますが、登録して、テストのために異なるURLを変更しようとしました(ドメイン名の変更、プロトコルの変更httpsへのhttps)、しかしそれは決して機能しません!他に何を確認できるかわかりません。少なくとも何かアドバイスをお願いします。

13
Unstaged

ドキュメントでは、手順1で説明しています。 https://developers.google.com/+/web/signin/server-side-flow#step_1_create_a_client_id_and_client_secret リダイレクトURIを構成することはできません。「許可されたJavaScriptオリジン」のみです。認可リクエストとトークン交換では、redirect_uriパラメータ値はpostmessageに設定する必要があります。

編集:これに関する先行技術: Google OAuth 2認証-エラー:redirect_uri_mismatch

29
Hans Z.

自分でこの問題に遭遇しました。私の場合、資格情報はインストール済みアプリケーション[〜#〜] not [〜#〜]にセットアップされましたWebアプリケーション。 Installed applicationsはredirect URLsで設定できないようです。 web applicationとして新しい資格情報を作成しました。これにより、一連のredirect urlsを設定するオプションが与えられました。

これと他の回答のアドバイスに従って、URLが一致(コピー&ペースト)していることを確認し、これは私にとって正しく機能しました。これはシークレットウィンドウでも行いました。

その結果、ブラウザはredirect_urlパラメータに入れたURLに転送され、次のステップで使用するコードが設定された特別なクエリ文字列パラメータcodeが追加されました。

2
Ben

Google IAP の使用時にこれが表示された場合、ブラウザでURLにアクセスしようとすると、メッセージが表示されます。

  1. それはエラーです。

エラー:redirect_uri_mismatch

リクエスト内のリダイレクトURI [your_url]/_ gcp_gatekeeper/authenticateは、OAuthクライアント。許可されたリダイレクトURIを更新するには、 https: //console.developers.google.com/apis/credentials/oauthclient/ ?pro​​ject=[your_project_id]

提供されたURLにアクセスする場合(または間接的に コンソール >>正しい「OAuth 2.0クライアントID」で[編集]をクリックして)、[承認済みリダイレクトURI]セクションで、 [your_url]/_gcp_gatekeeper/authenticate URLセット。

_gcp_gatekeeper/authenticate部分は必ず必要です。

リダイレクトURIが一致しないため、Googleは400エラーを返します。

0
eversMcc