2016-11-03 12 views
0

PHPでGoogleドライブAPIを使用してGoogleドライブAPIを実行しようとしています。私はロカストのサイトを設定し、JSONをダウンロードして、クライアントにその資格情報をロードし、ローカルのサイトにすべて正常に動作するようにする資格があります。uriが正しくコンソールに設定されていてもgoogleドライブAPIとの不一致が発生する

ライブサイトに移動し、私たちがライブサイトで使用しているプロジェクト用のJSONをダウンロードすると、私はredirect_uri_mismatchを取得し続けます。私はこのプロジェクトのコンソールをチェックして、リダイレクトURIが正しく設定されています。私は、リダイレクトURI私はこれがキル上で実現

https://www.awesomestories.com/Google/getClient 
https://awesomestories.com/Google/getClient 
https://www.awesomestories.com/Google/getClient/ 
https://awesomestories.com/Google/getClient 

ために、次のしているが、私はすべての可能なバージョンが問題としてこれを排除するために設定されたことを確認したかったです。 Googleのプロンプトが起こっているとコードが返されると私がGoogleのクライアントにコードパラメータをロードしようとしたとき:

$resp = $client->authenticate($_GET['code']); 

私は、次の応答

array(3) { 
    ["error"]=> 
    string(21) "redirect_uri_mismatch" 
    ["error_description"]=> 
    string(11) "Bad Request" 
    ["error_uri"]=> 
    string(0) "" 
} 

にそれがリダイレクトされるURLを取得しますコンソールに設定されているものと一致するものは

https://www.awesomestories.com/Google/getClient 

です。また、私たちはGoogleClientが使用しているOauth2の資格情報ではなく、このプロジェクトに関連付けられているAPIキーを使用していますが、サイトでこの同じプロジェクトの資格情報を使用しています。このプロジェクトでは、Google Consoleで設定したOauth2認証情報を初めて使用しています。私は、なぜ認証がテストサイトで成功しているのか、実際のサイトで成功していないのか分かりません。

奇妙であるもう一つは、クライアントの初期化が次のようになります:

  $client = new Google_Client(); 
     $client->setAuthConfigFile(SYSTEM_PATH.'/shared/php/google-api-php-client/client-prod.json'); 
     $client->setAccessType('offline'); 
     $client->setApprovalPrompt("force"); 
     $client->setPrompt("consent"); 

と私のローカルサイト上の

グーグルプロンプト認証画面が立ち上がるそれがオフラインアクセスを許可するように要求しますが、ライブでオフラインアクセスを許可することはありません。

誰かが私に間違っていることを指摘できたら、本当に感謝します。

+0

**「redirect_uri_mismatch」**エラーが発生した場合は、それぞれのURLに正しいOAuth 2.0クライアントIDを使用している場合は、APIコンソールを確認してください。関連するSOの質問 - この種のエラーをデバッグするのに役立つ[Google OAuth 2認証 - エラー:redirect_uri_mismatch](http://stackoverflow.com/a/11485644/5995040)また、提案として、ライブサイトとテストサイトに異なるOAuth 2.0クライアントIDを指定してください。お役に立てれば。 –

+0

Mr.Rebotに感謝します。私は、コンソールとOAuthの資格情報をチェックし、彼らは正しいと思った。私は理由は分かりませんが、これは私のために修正されました:私はすべてのリダイレクトuriを削除し、それらを追加してからコードを実行し、それがうまくいったのです。 –

答えて

0

だから私はなぜこれがうまくいったのか分かりませんが、それはありました。私はすべてのリダイレクトurisをこのプロジェクトに関連付けられたプロジェクトで削除し、コードを実行して、リダイレクト不一致のuriエラーを予想通りに受け取った後、リダイレクトuriを追加して、プロンプトを表示してからコードを実行し、呼び出しが成功しました。奇妙なことは、エラーメッセージからコピーしたリダイレクトは、削除したものをコピーして比較したので、これがなぜ機能したのかわからないため、以前のものと同じだったということです。また、リダイレクトuriを使用してGoogleクライアントを設定する前に、プロンプト画面がうまくいきました。これは、Googleのプロンプト画面から返された認証コードを読み込み、uriの不一致エラーが表示されたときだけでした。私はリダイレクトuriがクライアント上で間違って設定されていて、このエラーがプロンプト画面に表示される前にGoogleのプロンプトを実行したので、ここで何が起こっていたのか肯定的ではありません。

関連する問題