653 Stimmen

Google OAuth 2-Autorisierung - Fehler: redirect_uri_mismatch

Auf der Website https://code.google.com/apis/console Ich habe meine Anwendung registriert, generierte Kunden-ID: y Geheimnis des Kunden zu meiner App und versuchte, sich mit Google anzumelden. Leider bekam ich die Fehlermeldung:

Error: redirect_uri_mismatch
The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI

scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
response_type=code
redirect_uri=http://127.0.0.1:3000/auth/google_oauth2/callback
access_type=offline
approval_prompt=force
client_id=generated_id

Was bedeutet diese Meldung, und wie kann ich sie beheben? Ich verwende den Edelstein omniauth-google-oauth2 .

10voto

itsazzad Punkte 6337

Checkliste:

  • http o https ?
  • & o & ?
  • abschließender Schrägstrich( / ) oder öffnen ?
  • (CMD/CTRL)+F suchen Sie auf der Seite mit den Anmeldeinformationen nach der genauen Übereinstimmung. Wenn nicht gefunden, suchen Sie nach der fehlenden Übereinstimmung.
  • Warten Sie, bis Google die Seite aktualisiert hat. Das kann in jeder halben Stunde passieren, wenn Sie häufig ändern oder es kann im Pool bleiben. In meinem Fall hat es fast eine halbe Stunde gedauert, bis es wirksam wurde.

9voto

Kathir Punkte 1147

Wenn Sie Ihre Anwendung bei https://code.google.com/apis/console und eine Client-ID eingeben, haben Sie die Möglichkeit, einen oder mehrere Redirect URIs anzugeben. Der Wert der redirect_uri Parameter in Ihrem auth URI muss genau mit einem von ihnen übereinstimmen.

8voto

luismzk Punkte 83

Es wurde gründlich beantwortet, aber vor kurzem (vor etwa einem Monat) hat Google aufgehört, meine URI zu akzeptieren, und es hat nicht funktioniert. Ich weiß sicher, dass es vorher funktioniert hat, weil ein Nutzer damit registriert ist.

Wie auch immer, das Problem war die regelmäßige 400: redirect_uri_mismatch, aber der einzige Unterschied war, dass es von https:// zu http:// ändern, und Google wird nicht zulassen, dass Sie http:// redirect URI registrieren, da sie Produktion Publishing-Status (im Gegensatz zu localhost) sind.

Das Problem lag in meinem Callback (ich verwende Passport für die Anmeldung) und ich habe nur

callbackURL: "/register/google/redirect"

Ich habe die Dokumentation gelesen und eine vollständige URL verwendet, also habe ich sie geändert in

callbackURL: "https://" + process.env.MY_URL+ "/register/google/redirect"

Ich fügte https localhost zu meinem akzeptierten URI hinzu, damit ich lokal testen konnte, und es funktionierte wieder.

TL;DR verwenden Sie die vollständige URL, damit Sie wissen, wohin Sie umleiten

8voto

Jacek Góraj Punkte 915

Bei mir lag es daran, dass ich in der Liste 'Authorized redirect URIs' fälschlicherweise den Eintrag https://developers.google.com/oauthplayground/ anstelle von https://developers.google.com/oauthplayground (ohne / am Ende).

7voto

wolfgang Punkte 6481

Vorsicht mit dem Extra / am Ende der Url http://localhost:8000 unterscheidet sich von http://localhost:8000/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X