web-dev-qa-db-ja.com

Google OAUTH:リクエストのリダイレクトURIが登録済みリダイレクトURIと一致しませんでした

私はJavaベースのWebアプリからYouTubeにアップロードしようとしていますが、数日かけて問題の原因と場所を理解しようとしていますが、今は髪を引っ張っています私の頭。

Google ConsoleでWebアプリを登録したので、クライアントIDとシークレットのペアを取得し、設定を使用してJSONタイプのファイルをダウンロードできるようになりました。

構成は次のとおりです。

{
    "web":{
        "auth_uri":"https://accounts.google.com/o/oauth2/auth",
        "client_secret":"***",
        "token_uri":"https://accounts.google.com/o/oauth2/token",
        "client_email":"***",
        "redirect_uris":["http://localhost:8080/WEBAPP/youtube-callback.html","http://www.WEBAPP.md/youtube-callback.html"],
        "client_x509_cert_url":"***",
        "client_id":"***",
        "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
        "javascript_origins":["http://www.WEBAPP.md/"]
    }
}

GoogleからデフォルトのURLを取得することはどのように可能ですか?

The redirect URI in the request: http://localhost:8080/Callback did not match a registered redirect URI

私の代わりにデフォルトのhttp://localhost:8080/Callback URLを常に提供します。

そして、IDEコンソールは次のことを示しています。

Please open the following address in your browser: https://accounts.google.com/o/oauth2/auth?client_id=***&redirect_uri=http://localhost:8080/Callback&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload Attempting to open that address in the default browser now...

依存関係の最新バージョンを使用しています:google-api-services-youtube v3-rev99-1.17.0-rcおよびgoogle-api-services-youtubeAnalytics v1-rev35-1.17。 0-rc

46
Denees

ブラウザがユーザーをGoogleのoAuthページにリダイレクトするとき、トークン応答でGoogleのサーバーに返すリダイレクトURIをパラメーターとして渡しますか?コンソールでリダイレクトURIを設定することは、ログイン試行が発生したときにどこに行くべきかをGoogleに伝える方法ではなく、許可されたリダイレクトURIが何であるかをGoogleに伝える方法です(したがって、誰かがクライアントでWebアプリを作成する場合IDは異なるリダイレクトURIですが、許可されません); Webアプリは、誰かが「ログイン」ボタンをクリックしたときに、ブラウザを次の場所に送信する必要があります。

https://accounts.google.com/o/oauth2/auth?client_id=XXXXX&redirect_uri=http://localhost:8080/WEBAPP/youtube-callback.html&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload

(パラメーターとして渡されるコールバックURIは、URLエンコードされている必要があります、btw)。

Googleのサーバーがユーザーから承認を取得すると、redirect_uriとして送信したものにブラウザがリダイレクトされます。そのリクエストにトークンをパラメーターとして含めるため、コールバックページでトークンを検証し、アクセストークンを取得して、アプリの他の部分に移動できます。

あなたが訪問した場合:

http://code.google.com/p/google-api-Java-client/wiki/OAuth2#Authorization_Code_Flow

Javaクライアントのより良いサンプルを見ることができ、getRedirectUriメソッドをオーバーライドして、デフォルトが使用されないようにコールバックパスを指定する必要があることを示しています。

リダイレクトURIは複数の理由でclient_secrets.jsonファイルにあります... 1つの大きな理由は、oAuthフローが、アプリが指定するリダイレクトがアプリで許可されているものと一致することを確認できるようにするためです。

https://developers.google.com/api-client-library/Java/apis/youtube/v にアクセスすると、コンソールで直接アプリに基づいた自分用のサンプルアプリケーションを生成できます。 、(ここでも)特定のコールバックを使用するためにgetRedirectUriメソッドが上書きされます。

30
jlmcdonald

私はあなたと同じ問題に遭遇したと思います。次の手順でこの問題に対処しました。

1) Google Developers Console に移動します

2)JavaScriptの起源を設定する:

3)リダイレクトURIの設定:

39
Max

開発者コンソールに移動して設定する必要があります

http://localhost:8080/WEBAPP/youtube-callback.html

コールバックURLとして。

このビデオ は、新しいものではなく古い開発者コンソールを示しているため、少し古くなっていますが、概念は引き続き適用されます。プロジェクトを見つける必要があります 開発者コンソールでコールバックURLを登録

4
Ikai Lan

次のクライアントクレデンシャルを使用して、作業を開始できました。

承認されたJavaScriptオリジン

http://localhost

承認済みリダイレクトURI

http://localhost:8090/oauth2callback

注:8080の代わりにポート8090を使用しましたが、pythonスクリプトがclient_secret.jsonファイルと同じポートを使用する限り、それは問題ではありません。

リファレンス: Pythonクイックスタート

3
myidealab