2010-12-30 11 views
22

Próbuję skonfigurować Omniauth zgodnie z opisem w tym Railscast. Chociaż działa z Twitterem, nie mogę go uruchomić z Facebookiem. Ja również skonfigurować „http://localhost:3000” jako SITEURL i „localhost” jako domeny, ale nadal pojawia się następujący komunikat o błędzie w przeglądarce:Uwierzytelnianie Omniauth na Facebooku na localhost

Invalid redirect_uri: Given URL is not allowed by the Application configuration. 

Czy ktoś z was ma jakieś sugestie, w jaki sposób rozwiązać ten problem? Z góry dziękuję.

+0

Nie sądzę, że dodałem konfigurację z wyjątkiem "http://0.0.0.0:3000/". Kiedy uruchamiasz lokalny serwer Railsów, jaki adres IP ma on używać? – monocle

+0

To mówi: http://0.0.0.0:3000. Co dokładnie dodałeś w swoim pliku hosta? –

+0

Nigdy nie zmodyfikowałem pliku hosts. Ma 127.0.0.1 dla localhost. – monocle

Odpowiedz

32

Zobacz przekierowanie w URI. Mój odczyt localhost: 3000, więc zmieniłem adres URL witryny na "http: // localhost: 3000 /" i zadziałało.

+2

Teraz działa! Dziękuję bardzo. wpadł na ten problem http://stackoverflow.com/questions/3977303/omniauth-facebook-certificate-verify-failed. Postępowałem zgodnie z radą podaną w odpowiedzi i pojawił się kolejny błąd: Brak trasy odpowiada "/ auth/failure" .. Mam nadzieję, że znajdzie się na to rozwiązanie ... –

+2

Czy istnieje sposób sprawdzenia w localhost i nadal działa aplikacja w środowisku produkcyjnym? Mam na myśli, że mogę uzyskać dostęp do mojej aplikacji przez Facebook i chcę przetestować ją lokalnie bez zmienić przeznaczenie przekierowania na Facebooku. –

+1

wreszcie ktoś w stosie z idealną odpowiedzią na to gówno! dzięki –

7

Spróbuj użyć

http://0.0.0.0:3000/ 

dla 'Site URL'. To działa dla mnie. (Nie mam również nic w polu "Domena witryny".)

+0

wciąż otrzymuję ten sam błąd po wykonaniu polecenia. czy dodałeś linię do pliku hosta? Zaczynam tracić zdrowie psychiczne z tego powodu:: –

+0

Rails w końcu nie konwertuje '127.0.0.1' na' localhost', może udzielić dostępu teraz, dziękuję –

28

Oto, co sprawdziło się u mnie.

W tej chwili Facebook nie zezwala na ustawienie domeny witryny na adres IP, więc nie można ustawić adresu URL witryny na http://127.0.0.1:3000/, ponieważ wówczas Facebook będzie skarżył się, że adres URL nie jest zgodny z domeną.

Więc w swoim Facebooku App ustaw:

Site URL: http://localhost:3000/ 
Domain: localhost 

Po wejściu do aplikacji na komputerze dev upewnić wpisać localhost: 3000 w przeglądarce. Jeśli użyjesz 127.0.0.1:3000, OmniAuth użyje tego w adresie wywołania zwrotnego, który wyśle ​​na Facebooka, a następnie na Facebooku pojawi się błąd, o którym wspomniał Ryan.

+0

gdzie powinieneś je ustawić? W jakim pliku? – kibaekr

+0

@kibaekr na desce rozdzielczej aplikacji Facebook https://developers.facebook.com/apps/YOUR_APP_ID/summary –

+0

Czy istnieje sposób sprawdzenia w localhost i nadal aplikacja działa w środowisku produkcyjnym? Chodzi mi o to, że mogę uzyskać dostęp do mojej aplikacji przez Facebook i chcę przetestować ją lokalnie, bez konieczności zmiany przeznaczenia przekierowania na Facebooku. –

15

Przełączam się na http://lvh.me:3000 w mojej lokalnej przeglądarce, aby przetestować facebook lokalnie. Następnie w ustawieniach aplikacji na Facebooku, uczyń lvh.me swoją domeną.

lvh.me to zarejestrowana domena wskazująca 127.0.0.1, którą programista kupił w celu testowania poddomen lokalnie.

+0

Świetna rada. Dzięki! – bikedorkseattle

0

Jeśli jesteś na OSX można użyć pow http://pow.cx/ zmienić nazwę localhost do

http://yourapp-dev 

(nie jest tak naprawdę przemianowany jest dodawana)

można ustawić, że jako ważnej nazwy domeny na Facebooku.

+3

Czy próbowałeś tego? Ponieważ miałem z tym problem. Facebook nie zezwalał na adres .dev. – Shmidt

Powiązane problemy