wake-up-neo.com

Google OAUTH: Der Weiterleitungs-URI in der Anfrage stimmte nicht mit einem registrierten Weiterleitungs-URI überein

Ich versuche, von meiner Java) - basierten Web-App aus einen Upload auf YouTube durchzuführen. Ich habe ein paar Tage damit verbracht, zu verstehen, was und wo das Problem ist, und kann es nicht verstehen Haare aus meinem Kopf.

Ich habe meine Web-App in Google Console registriert. Daher habe ich ein Paar Client-IDs und Secret sowie die Möglichkeit, eine JSON-Typdatei mit meiner Konfiguration herunterzuladen.

Also hier ist die Konfiguration:

{
    "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/"]
    }
}

Wie ist es möglich, dass ich die Standard-URL von Google erhalte?

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

Es gibt mir immer die Standardeinstellung http://localhost:8080/Callback URL statt meiner.

Und IDE Konsole zeigt mir, dass:

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...

Ich verwende die letzte Version von Abhängigkeiten: google-api-services-youtube v3-rev99-1.17.0-rc und google-api-services-youtubeAnalytics v1-rev35-1.17. 0-rc

46
Denees

Wenn Ihr Browser den Benutzer auf die oAuth Seite von Google umleitet, übergeben Sie als Parameter den Umleitungs-URI, zu dem der Server von Google mit der Token-Antwort zurückkehren soll? Dies ist eine Möglichkeit, Google mitzuteilen, wohin es gehen soll, wenn ein Anmeldeversuch eingeht. Sie dient jedoch dazu, Google mitzuteilen, wie hoch die zulässigen Weiterleitungs-URIs sind Ihre Web-App sollte, wenn jemand auf die Schaltfläche "Anmelden" klickt, den Browser an folgende Adresse senden:

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

(Der als Parameter übergebene Callback-URI muss übrigens url-codiert sein.).

Wenn der Google-Server vom Nutzer eine Autorisierung erhält, leitet er den Browser an das weiter, was Sie als redirect_uri Gesendet haben. In dieser Anforderung ist das Token als Parameter enthalten, sodass Ihre Rückrufseite das Token dann validieren, ein Zugriffstoken abrufen und zu den anderen Teilen Ihrer App wechseln kann.

Wenn Sie besuchen:

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

Sie können dort bessere Beispiele des Java client sehen, was zeigt, dass Sie die getRedirectUri -Methode überschreiben müssen, um Ihren Rückrufpfad anzugeben, damit der Standard nicht verwendet wird.

Die Umleitungs-URIs befinden sich aus mehreren Gründen in der Datei client_secrets.json. Ein großer URI dient dazu, dass der Fluss oAuth=) überprüfen kann, ob die von Ihrer App angegebene Umleitung mit der von Ihrer App zugelassenen übereinstimmt .

Wenn Sie https://developers.google.com/api-client-library/Java/apis/youtube/v3 besuchen, können Sie eine Beispielanwendung generieren Dies basiert für Sie direkt auf Ihrer App in der Konsole, in der (erneut) die Methode getRedirectUri überschrieben wird, um Ihre spezifischen Rückrufe zu verwenden.

30
jlmcdonald

Ich glaube, ich bin auf dasselbe Problem gestoßen wie Sie. Ich habe dieses Problem mit den folgenden Schritten behoben:

1) Gehen Sie zu Google Developers Console

2) JavaScript-Ursprünge festlegen:

3) Umleitungs-URIs festlegen:

39
Max

Sie müssen in die Entwicklerkonsole gehen und festlegen

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

als Ihre Rückruf-URL.

Dieses Video ist etwas veraltet, da die ältere Entwicklerkonsole anstelle der neuen angezeigt wird. Die Konzepte sollten jedoch weiterhin gelten. Sie müssen Ihr Projekt finden in der Entwicklerkonsole und registrieren Sie eine Rückruf-URL .

4
Ikai Lan

Ich konnte meine mit den folgenden Client-Anmeldeinformationen zum Laufen bringen:

Autorisierte JavaScript-Ursprünge

http://localhost

Autorisierte Weiterleitungs-URIs

http://localhost:8090/oauth2callback

Hinweis: Ich habe Port 8090 anstelle von 8080 verwendet, aber das spielt keine Rolle, solange Ihr python Skript denselben Port wie Ihre client_secret.json-Datei verwendet.

Referenz: Python-Schnellstart

3
myidealab