2012-11-02 15 views
15

adres URL wydają prawo (ostatnia aktualizacja nich wczoraj):Pierwsze "Błąd: redirect_uri_mismatch" z google_oauth2

enter image description here

Pliki TOO:

omniauth.rb:

provider :google_oauth2, 'MY_CLIENT_ID.apps.googleusercontent.com', 'MY_CLIENT_SECRET', 
      :scope => 'https://mail.google.com/mail/feed/atom/' 

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

header.html.erb

<li><%= link_to "Sign in with Google", "auth/google_oauth2" %></li> 

routes.rb:

match '/auth/:provider/callback', to: 'sessions#omniauth_create' 

Ale jestem coraz to:

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

(Twitter i Facebook OmniAuth pracują doskonale)

Nie wiesz co to jest problem. Wszelkie usggestions to naprawić?

EDIT

Zmieniłem URI do http ...:

enter image description here

Ale wciąż otrzymuję ten sam błąd.

Odpowiedz

21

Wygląda na to, że żądanie jest trafiane http://localhost:3000/auth/google_oauth2/callback, ale określony identyfikator przekierowania URI odpowiadający podobnemu wzorowi jest dla https. Dodanie http://localhost:3000/auth/google_oauth2/callback do listy przekierowań może potencjalnie rozwiązać ten problem.

EDIT: Innym potencjalnym poprawka jest w tym tyłu / w analogicznym przekierować URI, który ukazał się na pracę w tym przypadku.

+0

Dzięki. Myślałem, że to też. Dodałem przekierowanie 'http: // localhost: 3000' i zaktualizowałem omniath.rb. Ale wciąż otrzymuję ten sam błąd (proszę zobaczyć moją ** EDYTĘ **). – alexchenco

+5

@alexchenco Ah, rozumiem. Czy próbowałeś dodać zarówno "http", jak i "https" do listy URI? Zgadzam się, że wygląda na to, że wszystko robisz dobrze, ale zwykle domyślnie dodawałem identyfikatory URI "http" i "https", gdy dotyczy to OAuth. Poza tym, ale czy próbowałeś dodawać końcowe znaki '/' do identyfikatorów URI? Tak potencjalnie cztery URI (overkill, yes :)): 'http' i' https', z których każdy zawiera końcowy frontslash i bez niego. – RocketDonkey

+0

Wielkie dzięki! Dodaj, aby dodać końcowe "/". Bardzo dziwne, moja aplikacja Railsowa nie ma końcowego znaku '/', a przykład Google dostarcza go również nie zawiera. – alexchenco

0

enter image description here

foo

vi config/inicjalizatory/omniauth.rb OmniAuth.config.full_host = 'https://localhost:3000' Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, 'google_client_id', 'google_client_secret' end

0

Dzielenie bardzo prosty copy-paste rozwiązanie, które pracowały dla mnie.

skopiowałem co ja określając w moim kodu jako redirectUri tj "redirect_uri": "http://127.0.0.1:3001/" i wklejony value tego key wewnątrz Google ustawień które proszą o Autoryzowany przekierować URI. W ten sposób upewniam się, że oba parametry są takie same.

Jeśli został obliczony , wykonałbym go i skopiowałam z okna konsoli przed wklejeniem go dla ustawień google.

0

Próbowałem wszystkich wyżej wymienionych, ale nie działa dla mnie . W końcu zauważony w moim komunikacie o błędzie moje połączenie było nieco inne. Miałem użytkowników między localhost: 3000 i auth. Nie bardzo wiem, dlaczego.

http://localhost:3000/users/auth/google_oauth2/callback 

Zmieniono, odczekałem 30 minut i zadziałało.

Powiązane problemy