Autoryzacja Google OAuth 2 - błąd: redirect_uri_mismatch

385

Na stronie https://code.google.com/apis/console zarejestrowałem aplikację, skonfigurowałem wygenerowany identyfikator klienta: i klucz tajny klienta w mojej aplikacji i próbowałem zalogować się w Google. Niestety dostałem komunikat o błędzie:

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

Co oznacza ten komunikat i jak mogę go naprawić? Używam klejnotu omniauth-google-oauth2 .

użytkownik984621
źródło
Każdy, kto ma ten problem, pamiętaj, że możesz go rozwiązać, uzyskując dostęp do adresu URL jak https://accounts.google.com/o/oauth2/auth?client_id={client_id}&response_type=token&redirect_uri={redirect_uri}&scope={scope}w przeglądarce, zamiast uruchamiać całą aplikację w celu przetestowania.
Jack M
Zauważyłem, że Google automatycznie wiąże redirect_uri w podwójnych cudzysłowach w (redirect_uri = „cokolwiek”) powyżej adresu URL i powoduje ten błąd. Jeśli usunę te podwójne cudzysłowy, będę mógł przejść do następnego ekranu. Jak możemy uniknąć tych podwójnych cytatów, ponieważ są one automatycznie przekierowywane przez sam Google.
Abhishek Soni

Odpowiedzi:

388

Identyfikator URI przekierowania (do którego zwracana jest odpowiedź) musi zostać zarejestrowany w konsoli API, a błąd wskazuje, że tego nie zrobiłeś lub nie zrobiłeś tego poprawnie.

Przejdź do konsoli swojego projektu i zajrzyj do API Access. Powinieneś zobaczyć swój client ID& client secrettam, wraz z listą przekierowań URI. Jeśli żądanego identyfikatora URI nie ma na liście, kliknij edytuj ustawienia i dodaj identyfikator URI do listy.

EDYCJA: (od wysoko ocenionego komentarza poniżej) Pamiętaj, że aktualizacja konsoli Google API i obecna zmiana może zająć trochę czasu. Zasadniczo tylko kilka minut, ale czasem wydaje się dłuższy.

Steve Bazyl
źródło
9
Jest jakaś magia, ponieważ kiedy próbowałem tego samego oddzwaniania godzinę temu, to nie działało, ale teraz działa. W każdym razie dzięki!
user984621
337
Wystąpił podobny problem i chciałem zauważyć, że aktualizacja konsoli Google API i obecna zmiana może zająć trochę czasu. Zasadniczo tylko kilka minut, ale czasem wydaje się dłuższy.
sdolphin
31
Pozwólcie, że uzupełnię odpowiedź @ Bazyl: w otrzymanej wiadomości wspomnieli o URI „ localhost: 8080 ” (co oczywiście wydaje się wewnętrzną konfiguracją google). Zmieniłem autoryzowany identyfikator URI dla tego „ localhost: 8080 ”, a komunikat już się nie pojawiał ... I wideo zostało przesłane ... Dokumentacja APIS jest BARDZO kiepska ... Za każdym razem, gdy mam coś do pracy google apis, po prostu czuję się „szczęśliwy”, ale brakuje dobrej dokumentacji na ten temat .... :(
David L
7
Otwórz okno prywatne / incognito w przeglądarce i spróbuj ponownie. Czasami rozwiązuje to problem buforowania.
Dunc
17
Google nie ma opcji przekierowania URI w konsoli Google w „Api & Auth> Poświadczenia” nie ma znaczenia, jeśli utworzę nowy identyfikator klienta lub wygeneruję nowy klucz, po prostu nie ma sposobu, aby określić przekierowanie uri z konsola google.
user3338098,
114

W moim przypadku był to wwwi non-wwwadres URL. Rzeczywista witryna miała wwwadres URL, a identyfikatory URI autoryzowanego przekierowania w Google Developer Console miały non-wwwadres URL. W związku z tym wystąpił niedopasowanie w przekierowanym URI. Rozwiązałem go, aktualizując Authorized Redirect URIsw Google Developer Console do wwwadresu URL.

Inne typowe niedopasowania URI to:

  • Używanie http://w identyfikatorach URI autoryzowanych przekierowań oraz https://jako rzeczywisty adres URL lub odwrotnie
  • Używanie końcowego ukośnika ( http://example.com/) w autoryzowanych identyfikatorach URI przekierowania i nieużywanie końcowego ukośnika ( http://example.com) jako rzeczywistego adresu URL lub odwrotnie

Oto zrzuty ekranu krok po kroku z konsoli programisty Google, aby pomóc osobom, które mają trudności ze zlokalizowaniem strony konsoli programisty, aby zaktualizować identyfikatory URI przekierowania.

  1. Wejdź na https://console.developers.google.com

  2. Wybierz swój projekt

Wybierz swój projekt

  1. Kliknij ikonę menu

Kliknij ikonę menu

  1. Kliknij API Managermenu

Wybierz menu Menedżera API

  1. Kliknij Credentialsmenu. A poniżej OAuth 2.0 Client IDsznajdziesz swoją nazwę klienta. W moim przypadku tak jest Web Client 1. Kliknij na niego, a pojawi się wyskakujące okienko, w którym możesz edytować Autoryzowane pochodzenie JavaScript i URI autoryzowanych przekierowań .

Wybierz menu Referencje

Oto artykuł Google na temat tworzenia identyfikatora projektu i klienta .

Mukesh Chapagain
źródło
9
Ta odpowiedź naprawdę musi zostać podniesiona, ponieważ zapewnia prawdziwą odpowiedź. Mieliśmy dokładnie ten sam problem i to pomogło go rozwiązać - dzięki!
winna
4
Mój problem polegał na tym, że wiedziałem, co robić, ale nie wiedziałem, gdzie to znaleźć w interfejsie użytkownika. Zrzuty ekranu tutaj pomogły. Dzięki.
Allen
3
Utrzymałem puste miejsca autoryzowanego JavaScript i autoryzowane identyfikatory URI przekierowania jako 127.0.0.1/google_account/authentication i zadziałało to ode mnie.
Krishh
1
Czy możesz mi pomóc z moim pytaniem? stackoverflow.com/questions/37307612/…
LatentDenis
Pomóż mi proszę. stackoverflow.com/questions/41270512/…
Niezniszczalny
91

Jeśli używasz przycisku javascript Google+ , musisz użyć postmessagezamiast rzeczywistego identyfikatora URI. Rozpracowanie tego zajęło mi prawie cały dzień, ponieważ dokumenty Google nie podają tego jasno z jakiegoś powodu.

Mike Keskinov
źródło
8
Ponieważ to pytanie jest największym hitem podczas przeglądania komunikatu o błędzie, oto kilka dodatkowych wskazówek. Jak mówi Mike, użyj „postmessage” dla URI przekierowania. Musisz podać to w 2 miejscach (jeśli korzystasz z przepływu aplikacji web-app-server). Jeden znajduje się w przycisku logowania g w javascript. Drugi znajduje się w kliencie autoryzacji sygnetów w kodzie serwera.
Rob Whiteside
świetna odpowiedź. Pisałem z javascript i musiałem ustawić „oauth2_redirect_uri” => „postmessage” w pliku config.php interfejsu API Google.
user2998553
4
postmessage brzmi nieźle, ale skutkuje bezużytecznymError: invalid_request origin parameter is required!
user3338098,
10
Po kilku godzinach próbowania rozwiązania tego problemu, twoja odpowiedź bardzo mi pomaga! Dokumentacja Google nie jest bardzo przejrzysta. Po stronie serwera, jeśli korzystasz z biblioteki klienta Google API, powinieneś użyć tego kodu: $client->setRedirectUri('postmessage');zamiast$client->setRedirectUri('http://your.url...');
Guicara
3
Wow .... Rozwiązanie @Guicara zadziałało dla mnie po wielu godzinach uderzania głową o ścianę.
djthoms
52

W każdym przepływie, w którym pobrałeś kod autoryzacji po stronie klienta, taki jak GoogleAuth.grantOfflineAccess()API , a teraz chcesz przekazać kod do serwera, wykorzystać go i przechowywać tokeny dostępu i odświeżania, musisz użyć literału postmessagezamiast redirect_uri.

Na przykład w oparciu o fragment kodu w dokumencie Ruby :

client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization
auth_client.update!(
  :scope => 'profile https://www.googleapis.com/auth/drive.metadata.readonly',
  :redirect_uri => 'postmessage' # <---- HERE
)

# Inject user's auth_code here:
auth_client.code = "4/lRCuOXzLMIzqrG4XU9RmWw8k1n3jvUgsI790Hk1s3FI"
tokens = auth_client.fetch_access_token!
# { "access_token"=>..., "expires_in"=>3587, "id_token"=>..., "refresh_token"=>..., "token_type"=>"Bearer"}

Jedyną dokumentacją Google, o której można nawet wspomnieć, postmessagejest ten stary dokument logowania do Google+ . Oto zrzut ekranu i link do archiwum, ponieważ G + się zamyka i ten link prawdopodobnie zniknie:

Starsza wersja DOC API API Google+

Jest absolutnie niewybaczalne, że strona dokumentu dla dostępu offline nie wspomina o tym. #FacePalm

Jeff Ward
źródło
1
Cholera, twój post wydawał się całkowicie nielogiczny, ale była to jedyna rzecz, która działała jak urok. Wielkie dzięki, stary !!!
mariobgr
@mariobgr Tak, inne odpowiedzi tutaj wspominają postmessage, ale chciałem podać konkretne okoliczności (np. grantOfflineAccess) kiedy ten szalony nieudokumentowany hack był dla mnie konieczny. : PI też nie chciał, żeby to była prawda. :) Kosztowały mnie godziny bólu głowy.
Jeff Ward
Dziękuję Ci! Właśnie tego potrzebowałem.
ernbrn
To musi przyciągnąć uwagę Google. To jest absolutnie przerażające.
polana
Niesamowite, ale prawdziwe ... O__o
mlb
41

W mojej aplikacji internetowej poprawiłem swój błąd pisząc

instead of : http://localhost:11472/authorize/
type :      http://localhost/authorize/
Guven Sezgin Kurt
źródło
Dzięki za udostępnienie, to pomaga. Utknąłem na tym, ponieważ interfejs API GitHub OAuth2 nie wymaga usunięcia numeru portu.
florisla
To też działało dla mnie. Postępowałem zgodnie z tym kursem: asp.net/mvc/overview/security/... i otrzymałem „błąd przekierowania URI ”. Po zmianie localhosta: 44334 / signin-google na localhost / signin-google zadziałało. Wielkie dzięki za przydatną wskazówkę.
FrenkyB
1
Dziękuję bardzo. Testowałem z tym github.com/google/google-api-dotnet-client-samples i „ Identyfikator URI przekierowania w żądaniu” wydawał się pochodzić z innego portu przy każdym uruchomieniu. To bardzo mi pomogło. Zrozumienie, co się dzieje, zajęłoby wiele godzin!
Alejandro Lozdziejski
Dzięki, to też działało dla mnie. Po prostu upuść port! :)
vidstige 24.09.17
31

Upewnij się, że sprawdziłeś protokół „http: //” lub „https: //” jako protokół kontroli Google. Lepiej dodać oba adresy URL do listy.

Chintan
źródło
10
Chciałbym
przewinąć
1
Nie, lepiej jest po prostu upewnić się, że używasz protokołu https.
Brad Koch
7

Wydaje się to dość dziwne i denerwujące, że nie ma „jednego” rozwiązania. dla mnie http: // localhost: 8000 nie działało, ale http: // localhost: 8000 / działało.

arshpreet
źródło
2
dzieje się tak dlatego, że redirect_urimusi to być DOKŁADNY MECZ na konsoli programisty i w aplikacji.
Tony Gil
6

Po zarejestrowaniu aplikacji na https://code.google.com/apis/console i utworzeniu identyfikatora klienta masz szansę określić co najmniej jeden identyfikator URI przekierowania. Wartość redirect_uriparametru w twoim identyfikatorze URI uwierzytelniania musi dokładnie odpowiadać jednemu z nich.

Kathir
źródło
I to z bardzo polem, które ma problemy z głębokimi linkami opartymi na Angularu, ponieważ Google nie zgadza się [ landed1.github.io/videos.html#/oauth2callback]is prawidłowy adres URL
wylądował
2
Wygląda na to, że adres URL https://code.google.com/apis/consolenie jest już aktualny
Anthony Kong
Dzięki @AnthonyKong za aktualizację. Zmieniłem adres URL na jeden z nich. Proszę, sprawdź teraz.
Kathir,
6

Ta odpowiedź jest taka sama, jak odpowiedzieć na to Mike'a , a odpowiedź Jeffa , oba zestawy redirect_urido postmessagepo stronie klienta. Chcę dodać więcej o stronie serwera, a także o szczególnych okolicznościach dotyczących tej konfiguracji.

Stos technologii

Backend

Frontend

Przepływ „kodu” (specjalnie dla Google OAuth2)

Podsumowanie: Reaguj -> poproś o „kod” autoryzacji społecznościowej -> zażądaj tokenu jwt, aby uzyskać status „logowania” w odniesieniu do własnego serwera / bazy danych zaplecza.

  1. Frontend (React) używa „przycisku logowania Google”, responseType="code"aby uzyskać kod autoryzacyjny. (to nie jest token, nie ma tokena dostępu!)
    • Przycisk logowania do google pochodzi ze react-google-loginwspomnianego powyżej.
    • Kliknięcie tego przycisku spowoduje wyświetlenie wyskakującego okna, w którym użytkownik może wybrać konto. Gdy użytkownik wybierze jeden i okno się zamknie, otrzymasz kod z funkcji wywołania zwrotnego przycisku.
  2. Interfejs użytkownika wysyła to do punktu końcowego serwera zaplecza JWT.
    • Żądanie POST, z { "provider": "google-oauth2", "code": "your retrieved code here", "redirect_uri": "postmessage" }
  3. Do mojego serwera Django używam Django REST Framework JWT + Django REST Social Auth. Django otrzymuje kod z interfejsu, zweryfikuj go za pomocą usługi Google (zrobione dla Ciebie). Po zweryfikowaniu wyśle ​​JWT (token) z powrotem do interfejsu. Frontend może teraz zbierać token i przechowywać go gdzieś.
    • Wszystkich REST_SOCIAL_OAUTH_ABSOLUTE_REDIRECT_URI, REST_SOCIAL_DOMAIN_FROM_ORIGINa REST_SOCIAL_OAUTH_REDIRECT_URIw Django settings.pysą niepotrzebne . (Są to stałe używane przez Django REST Social Auth) Krótko mówiąc, nie musisz konfigurować niczego związanego z adresem przekierowującym w Django . Interfejs "redirect_uri": "postmessage"w React wystarczy. Ma to sens, ponieważ praca społecznościowa, którą musisz wykonać po swojej stronie, to wszystkie żądania POST w stylu Ajax w interfejsie, nie przesyłające żadnej formy, więc w rzeczywistości domyślnie nie występuje przekierowanie. Dlatego adres URL przekierowania staje się bezużyteczny, jeśli używasz przepływu kodu + JWT, a ustawienie adresu URL przekierowania po stronie serwera nie działa.
  4. Django REST Social Auth obsługuje tworzenie kont. Oznacza to, że sprawdzi adres e-mail / nazwisko konta Google i sprawdzi, czy pasuje do dowolnego konta w bazie danych. Jeśli nie, utworzy je dla Ciebie, używając dokładnego adresu e-mail i imienia. Ale nazwa użytkownika będzie przypominać youremailprefix717e248c5b924d60adres e-mail [email protected]. Dodaje losowy ciąg znaków, aby utworzyć unikalną nazwę użytkownika. Jest to zachowanie domyślne, uważam, że można je dostosować i zagłębić się w ich dokumentację.
  5. Frontend przechowuje ten token i kiedy musi wykonać CRUD na serwerze backendu, zwłaszcza utworzyć / usunąć / zaktualizować, jeśli podłączysz token do swojego Authorizationnagłówka i wyślesz żądanie do backendu, backend Django rozpozna to jako login, tj. Uwierzytelniony użytkownik. Oczywiście, jeśli twój token straci ważność, musisz go odświeżyć, wysyłając kolejne żądanie.

O mój boże, spędziłem ponad 6 godzin i w końcu udało mi się to dobrze! Wierzę, że to pierwszy raz, kiedy to widziałem postmessage. Każdy, kto pracuje nad Django + DRF + JWT + Social Auth + Reactkombinacją, na pewno się w to wpakuje. Nie mogę uwierzyć, że żaden z wymienionych tam artykułów nie wspomina o tym oprócz odpowiedzi tutaj. Ale naprawdę mam nadzieję, że ten post pozwoli ci zaoszczędzić mnóstwo czasu, jeśli używasz stosu Django + React.

Shaung Cheng
źródło
5

15 lipca 2015 - logowanie, które działało w zeszłym tygodniu z tym skryptem podczas logowania

<script src="https://apis.google.com/js/platform.js" async defer></script>

przestał działać i zaczął powodować błąd 400 z Error: redirect_uri_mismatch

oraz w sekcji SZCZEGÓŁY: redirect_uri=storagerelay://...

rozwiązałem to, zmieniając na:

<script src="https://apis.google.com/js/client:platform.js?onload=startApp"></script>
Tony Gil
źródło
Napotkanie tego samego błędu 400, ale zmiana skryptu nie działała w moim Cordova WebView.
Nick Spacek,
@NickSpacek sprawdź, czy brakowało podwójnych cudzysłowów.
Tony Gil
czy możesz mi pomóc z moim pytaniem? stackoverflow.com/questions/37307612/…
LatentDenis
5

Lista kontrolna:

  • httpczy https?
  • &czy &amp;?
  • kończący ukośnik ( /) czy otwarty ?
  • (CMD/CTRL)+F, wyszukaj dokładne dopasowanie na stronie danych logowania. Jeśli nie znaleziono, wyszukaj brakujący.
  • Poczekaj, aż Google go odświeży. Może się zdarzyć co pół godziny, jeśli często się zmieniasz lub może pozostać w basenie. W moim przypadku minęło prawie pół godziny.
itsazzad
źródło
4

W moim przypadku mój typ aplikacji to „Inne”. Więc nie mogę znaleźć Authorized redirect URIsna stronie poświadczeń. Wygląda na to, że pojawia się w polu Typ aplikacji: „Aplikacja internetowa”. Ale możesz kliknąć Download JSONprzycisk, aby uzyskać client_secret.jsonplik. wprowadź opis zdjęcia tutaj

Otwórz plik json, i można znaleźć parametr takiego: "redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]. Wybieram użycie http: // localhost i działa dla mnie dobrze.

codezjx
źródło
pomóżcie mi proszę stackoverflow.com/questions/41270512/...
Niezniszczalny
4

Żadne z powyższych rozwiązań nie działało dla mnie. poniżej zrobiłem

zmień autoryzowane adresy URL przekierowania na - https: // localhost: 44377 / signin-google

Mam nadzieję, że to komuś pomoże.

Dheeraj Palagiri
źródło
jeśli użyjemy localhost będzie działał również dla opublikowanej strony internetowej. Mam na myśli, jeśli w konsoli API dodam identyfikator URI żądania localhost. Jak to będzie działać, gdy strona internetowa zostanie uruchomiona? Lub w przypadku witryn na żywo musimy umieścić inny zestaw rzeczywistego identyfikatora URI w konsoli API?
Niezniszczalny
4

uważaj na dodatkowe /na końcu adresu URL http://localhost:8000różni się odhttp://localhost:8000/

Wolfgang
źródło
To mi pomogło :)
Jacek Góraj
3

Użytkownicy Railsów (z dokumentów omniauth-google-oauth2 ):

Naprawianie niedopasowania protokołu dla redirect_uri w Railsach

Wystarczy ustawić full_host w OmniAuth na podstawie Rails.env.

# config / initializers / omniauth.rb

OmniAuth.config.full_host = Rails.env.production? ? „ https://domain.com ”: „ http: // localhost: 3000

PAMIĘTAJ: Nie dołączaj końcowego „/”

brntsllvn
źródło
2

dla mnie było tak dlatego, że na liście „URI autoryzowanych przekierowań” niepoprawnie wpisałem https://developers.google.com/oauthplayground/zamiast https://developers.google.com/oauthplayground(bez /na końcu).

Jacek Góraj
źródło
1

Pozwólcie, że uzupełnię odpowiedź @ Bazyl: w otrzymanej wiadomości wspomnieli o URI "http://localhost:8080/" (który oczywiście wydaje się wewnętrzną konfiguracją google). Zmieniłem autoryzowany identyfikator URI dla tego "http://localhost:8080/", a wiadomość już się nie pojawiła ... I film został przesłany ... Dokumentacja APIS jest BARDZO kiepska ... Za każdym razem, gdy mam coś do pracy z Google apis, po prostu czuję się „szczęśliwy”, ale brakuje dobrej dokumentacji na ten temat ... :( Tak, działam, ale nie rozumiem jeszcze, dlaczego się nie udało, ani dlaczego zadziałało ... Był tylko JEDEN miejsce, aby potwierdzić identyfikator URI w sieci, a on został skopiowany do client_secrets.json ... Nie dostaję, jeśli istnieje TRZECIE miejsce, w którym należy napisać ten sam URI ... Znajduję nie tylko dokumentację, ale także Projekt GUI Google ”

David L.
źródło
1

Każdy, kto próbuje znaleźć miejsce, w którym należy ustawić adresy URL przekierowań w nowej konsoli: Interfejsy API i uwierzytelnianie -> Poświadczenia -> Identyfikatory klientów OAuth 2.0 -> Kliknij link, aby znaleźć wszystkie adresy URL przekierowań

Steji
źródło
1

Musiałem utworzyć nowy identyfikator klienta w obszarze Interfejsy API i usługi -> Poświadczenia -> Utwórz poświadczenia -> OAuth -> Inne

Następnie pobrałem plik client_secret.json i korzystałem z niego z moim programem wiersza poleceń, który jest przesyłany na moje konto YouTube. Próbowałem użyć identyfikatora klienta OAuth aplikacji sieci Web, który podawał mi błąd URI przekierowania w przeglądarce.

James T.
źródło
0

Spróbuj wykonać następujące kontrole:

  1. Identyfikator pakietu w konsoli i aplikacji. Wolę ustawić identyfikator pakietu aplikacji, taki jak ten „org.peredovik. $ {PRODUCT_NAME: rfc1034identifier}”
  2. Sprawdź, czy dodałeś typy adresów URL na karcie Informacje, po prostu wpisz swój identyfikator pakietu w polu Identyfikator i Schematy URL, ustaw rolę na Edytor
  3. W konsoli na cloud.google.com „Interfejsy API i uwierzytelnianie” -> „Ekran zgody” wypełnij formularz dotyczący Twojej aplikacji. Pole „Nazwa produktu” jest wymagane.

Cieszyć się :)

Vlad
źródło
0

W moim przypadku musiałem sprawdzić typ identyfikatora klienta dla aplikacji internetowych / zainstalowanych aplikacji.

zainstalowane aplikacje: http: // localhost [przekierowanie URI] W tym przypadku localhost po prostu działa

aplikacje internetowe: Potrzebujesz prawidłowej nazwy domeny [Przekieruj identyfikatory URI:]

Bhuwan Gautam
źródło
0

Musisz wrócić do konsoli programisty i przejść do interfejsów API i uwierzytelniania> ekranu zgody i wypełnić to. W szczególności nazwa produktu.

Karta
źródło
Nie używaj także nazwy produktu, która jest również używana w innym projekcie. Upewnij się, że jest wyjątkowy.
florisla
0

Miałem ten sam problem z logowaniem się w Google, miałem zamiar pociągnąć za włosy !!! Poprawnie wpisałem swoje wywołania zwrotne w panelu poświadczeń Google w konsoli programisty Google. Oto moje adresy URL przekierowań:

https://www.example.com/signin-google

https://www.example.com/signin-google/

https://www.example.com/oauth2callback

https://www.example.com/oauth2callback/

wszystko wydaje się w porządku, prawda? ale nadal nie działało, dopóki nie dodałem jeszcze jednego magicznego adresu URL Dodałem adres URL logowania do google (który jest domyślnym wywołaniem zwrotnym Google) bez www i rozwiązany problem.

weź to pod uwagę (w zależności od Twojej domeny), możesz dodać lub nie zarówno adresy URL, jak i bez nich

Code_Worm
źródło
0

Mam aplikację frontend i API backend.

Z mojego serwera zaplecza testowałem, naciskając Google API i napotkałem ten błąd. Przez cały czas zastanawiałem się, dlaczego powinienem dawać, redirect_uribo to tylko backend, bo frontend ma sens.

To, co robiłem, to dawanie innego redirect_uri(choć ważnego) od serwera (zakładając, że jest to tylko symbol zastępczy, wystarczy tylko zarejestrować google), ale mój adres frontendowy, który utworzył kod tokena, był inny. Więc kiedy przekazałem ten kod podczas testów po stronie serwera (dla których przekierowanie-uri było inne), miałem do czynienia z tym błędem.

Więc nie rób tego błędu. Upewnij się, że interfejs użytkownika redirect_urijest taki sam jak serwer, ponieważ Google używa go do sprawdzania autentyczności.

omair azam
źródło
0

Poniżej znajdują się przyczyny błędu: Wystąpił problem z redirect_uri_mismatch:

  1. Pole adresu URL przekierowania puste w projekcie Google.
  2. Adres przekierowania nie pasuje do Twojej witryny
  3. Ważny! Będzie działać tylko z działającą domeną, taką jak example.com, book.com itp. (Nie działa z lokalnym hostem lub adresem URL AWS LB)

Zalecane użycie adresu URL domeny

Vernit Gupta
źródło
Co należy zrobić, jeśli Google cały czas generuje zły parametr redirect_uri? Jest generowany jako localhost: XXXXX z losowym numerem portu, ignorując przekierowanie uri I skonfigurowałem tworzenie klienta.
A. Makarevich
0

Sztuczka polega na wprowadzeniu odpowiedniego adresu URL przekierowania w momencie tworzenia identyfikatora. Odkryłem, że aktualizacja adresu URL przekierowania po utworzeniu identyfikatora za pomocą opcji „Edycja” po prostu nie kończy zadania. Dla mnie również zadziałało powielenie całego folderu „dostawcy” i skopiowanie go do tej samej lokalizacji, w której znajduje się plik „oauth” (tylko do momentu pomyślnego wygenerowania tokena, a następnie można usunąć zduplikowany folder „dostawcy”). Jest tak, ponieważ próba wskazania folderu dostawcy za pośrednictwem „../vendor/autoload” nie działała dla mnie.

Tak więc usuń istniejący problematyczny identyfikator OAuth klienta i wypróbuj to podejście, to zadziała.

Raymond Wachaga
źródło