web-dev-qa-db-de.com

Google OAuth 2.0 "error": "redirect_uri_mismatch"

Ich verbringe schon einen Tag damit, ein Glas zerbrochen zu haben, und ich bin wirklich sauer darüber, ich verstehe nicht, was Google von mir will und was falsch ist.

Ich habe Google+ API in der Entwicklerkonsole .__ aktiviert.google_ api enabled, hat neue OAuth-Client-ID erstellt 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));

alles wie in den Anweisungen hier erstellt: https://developers.google.com/+/web/signin/server-side-flow , die gplus-Schaltfläche wird auf der Seite angezeigt, und der Zugriff für autorisierte Benutzer wurde erfolgreich angefordert. aber wenn ich Schritt 8 gemacht habe Schritt 8: Initialisieren Sie die Google API-Clientbibliothek und starten Sie den Google+ Service . Meine Anforderung wird jedes Mal angezeigt, wenn Sie eine Antwort erhalten "error": "redirect_uri_mismatch".

Ich weiß, dass dieser Fehler angezeigt wird, wenn Sie redirect_uri nicht in Google Console registriert haben oder wenn Sie einen Schreibfehler gemacht haben. Ich habe ihn jedoch registriert und auch nur zum Testen versucht, verschiedene URLs (geänderte Domänennamen, geänderte Protokolle) einzurichten https zu https), aber es funktioniert nie! Ich habe keine Ahnung, was ich sonst noch überprüfen kann, bitte mindestens etwas raten.

12
Unstaged

Die Dokumente sagen in Schritt 1. https://developers.google.com/+/web/signin/server-side-flow#step_1_create_a_client_id_and_client_secret dass keine Umleitungs-URIs konfiguriert sein dürfen, nur "Authorized JavaScript origins". In der Autorisierungsanforderung und im Token-Austausch sollte der redirect_uri-Parameterwert auf postmessage gesetzt werden.

Bearbeiten: Stand der Technik hierzu: Google OAuth 2-Autorisierung - Fehler: redirect_uri_mismatch

25
Hans Z.

Ich bin selbst auf dieses Problem gestoßen. In meinem Fall wurden meine Anmeldeinformationen für eine installierte Anwendung eingerichtet , NICHT einer Webanwendung. Es scheint, dass Installed applications nicht mit redirect URLs konfiguriert werden kann. Ich habe einen neuen Berechtigungsnachweis als web application erstellt. Dies gab mir die Möglichkeit, eine Reihe von redirect urls festzulegen. 

Dem Ratschlag dieser und anderer Antworten folgend, stellte ich sicher, dass die URL übereinstimmt (Kopieren und Einfügen), und dies funktionierte für mich korrekt. Ich habe das auch in einem Inkognito-Fenster gemacht.

Das Ergebnis war, dass mein Browser an die URL weitergeleitet wurde, die ich in den Parameter redirect_url mit einem speziellen Abfragezeichenfolgeparameter code eingegeben habe, der mit dem Code gefüllt wurde, der für den nächsten Schritt verwendet werden soll.

2
Ben

Wenn Sie dies bei der Verwendung von Google IAP sehen und wenn Sie versuchen, Ihre URL in einem Browser aufzurufen, wird die folgende Meldung angezeigt:

  1. Das ist ein Fehler.

Fehler: redirect_uri_mismatch

Der Umleitungs-URI in der Anforderung [your_url]/_ gcp_gatekeeper/authenticate entspricht nicht den für den OAuth-Client autorisierten. Um die autorisierten Umleitungs-URIs zu aktualisieren, besuchen Sie: https://console.developers.google.com/apis/credentials/oauthclient/ ? Project = [your_project_id]

wenn Sie die URL aufrufen, die Sie erhalten (oder indirekt über die Konsole >> Klicken Sie auf Bearbeiten unter der korrekten "OAuth 2.0-Client-ID"), stellen Sie im Abschnitt "Authorized redirect URIs" sicher, dass die URL [your_url]/_gcp_gatekeeper/authenticate festgelegt ist .

Der _gcp_gatekeeper/authenticate-Teil ist auf jeden Fall erforderlich.

Google gibt den 400-Fehler zurück, da die Umleitungs-URI nicht übereinstimmt.

0
eversMcc