Komunikat logowania na Facebooku: „URL zablokowany: to przekierowanie nie powiodło się, ponieważ identyfikator URI przekierowania nie znajduje się na białej liście w ustawieniach OAuth klienta aplikacji”.

121

Ważna uwaga:

Jeśli zarejestrujesz się na testy, przejdź do ustawień swojego profilu i do swoich zainteresowań dodaj usuń profil .

Próbuję zalogować się przez Facebooka do mojej strony internetowej :

Otrzymuję następujący błąd:

Adres URL zablokowany: to przekierowanie nie powiodło się, ponieważ identyfikator URI przekierowania nie znajduje się na białej liście w ustawieniach OAuth klienta aplikacji. Upewnij się, że logowanie klienta i Web OAuth jest włączone i dodaj wszystkie domeny aplikacji jako prawidłowe identyfikatory URI przekierowania OAuth.

Moje settings(podstawy) na Facebooku to:

Na karcie zaawansowane Valid OAuth redirect URIsjest ustawione na:

http://openstrategynetwork.com/_oauth/facebook?close

Aplikacja jest public.

Więcej ustawień (Zaawansowane) tutaj: wprowadź opis obrazu tutaj

Klucz i tajny klucz aplikacji są poprawne. Używam Meteor i jego pakietów kont.

Amir Rahbaran
źródło
Jaki jest Twój ROOT_URL?
aedm
Jakiego adresu URL używasz do przekierowania na stronę logowania na Facebooku? Nadal musisz określić redirect_uri w żądaniu autoryzacji.
Edward Jiang
@aedm: ROOT_URL jest ustawiony nahttp://openstrategynetwork.com
Amir Rahbaran
@EdwardJiang: gdzie mogę to zrobić? To dziwne, ponieważ kiedyś działało dla localhost. Ale nawet localhost już nie działa.
Amir Rahbaran
Ja też mam ten problem, redirect_uri pasuje dokładnie do konfiguracji w ustawieniach klienta OAuth - zobacz więcej na developers.facebook.com/support/bugs/232085950706415 potrzebujesz pomocy każdemu .. z góry
dziękuję

Odpowiedzi:

80

Logowanie za pomocą przycisku Facebook w Twojej witrynie prowadzi do:

https://www.facebook.com/v2.2/dialog/oauth?client_id=1500708243571026&redirect_uri=http://openstrategynetwork.com/_oauth/facebook&display=popup&scope=email&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiIwSXhEU05XamJjU0VaQWdqcmF6SXdOUWRuRFozXzc0X19lbVhGWUJTZGNYIiwiaXNDb3Jkb3ZhIjpmYWxzZX0=

Ogłoszenie: redirect_uri=http://openstrategynetwork.com/_oauth/facebook

Jeśli zamiast tego zmienisz link na:

redirect_uri=http://openstrategynetwork.com/_oauth/facebook?close

Powinno działać. Możesz też zmienić łącze Facebooka nahttp://openstrategynetwork.com/_oauth/facebook

Możesz również dodać http://localhost/_oauth/facebookdo prawidłowych identyfikatorów URI przekierowania.

Facebook wymaga, abyś umieścił na białej liście przekierowujące identyfikatory URI, ponieważ w przeciwnym razie ludzie mogliby zalogować się za pomocą Facebooka do Twojej usługi, a następnie wysłać swój token dostępu do serwera atakującego! I nie chcesz, żeby tak się stało;]

Edward Jiang
źródło
4
Czym dokładnie jest identyfikator URI przekierowania OAuth? Spodziewałbym się, że będzie to ten sam adres URL, co główna aplikacja internetowa.
AlvinfromDiaspar
1
To wydaje się działać. Chociaż nie jestem pewien, czy nie było to pierwotnie, ponieważ próbowałem zalogować się na konto, na którym utworzyłem aplikację. Wdrożyłem to rozwiązanie i użyłem innego konta i zadziałało (pozornie). Język i informacje o identyfikatorach URI przekierowania protokołu OAuth muszą być jasne. Informacje są dość ezoteryczne i prawie tajemnicze. Użyte terminy nie są nawet zdefiniowane ani wyjaśnione.
abtecas
dziękuję bardzo rozwiązałem mój problem! mimo że SSL działa
Sweet Chilly Philly
Sztuczka polega na tym, aby spojrzeć na adres URL przekierowania i dodać go do „Prawidłowych identyfikatorów URI przekierowania OAuth” w moim przypadku to jest login-facebook.
Usama Saleem
1. upewnij się, że dodałeś adresy URL www i bez nich do identyfikatorów URI przekierowania
Bhavin Rana,
79

Jak pisze pytający

Na karcie Zaawansowane prawidłowe identyfikatory URI przekierowania OAuth jest ustawione na: ...

i miałem ten sam problem (wpisanie adresu URL przekierowania w niewłaściwe pole wejściowe), chciałbym to podkreślić

To nie jest

Settings -> Advanced -> Share Redirect Whitelist

ale

Facebook Login -> Settings -> Valid OAuth redirect URIs

Oszczędziłoby mi to 2 godziny prób i błędów.

Należy również pamiętać, że www.example.comto nie to samo co example.com. Dodaj oba formaty do adresu URL przekierowania.

andymel
źródło
11
Głosujący w dół: dodaj komentarz dotyczący swoich obaw, w przeciwnym razie odpowiedź nie będzie lepsza.
andymel
6
Jezu, spędziłem tyle czasu szukając w złym miejscu, dziękuję.
ricks
Próbuję dodać nowy identyfikator URI: New HTTP Redirect URIs are not allowed:(
XCS,
Dzięki wielkie. Próbowałem wszystkiego, ale w złym miejscu. Co oznacza „Udostępnij białą listę przekierowań”?
Sunil Kumar
20

To zadziałało dla mnie.

redierct_url = http://127.0.0.1:8080/accounts/facebook/login/callback/

Dostałem to z mojej przeglądarki po kliknięciu przycisku Facebooka Twoja przeglądarka zostanie przekierowana do linku do integracji z Facebook API, więc gdzie dostaniesz to przekierowanie. W moim przypadku link był ten, z którego otrzymałem redirect_url.

https://www.facebook.com/dialog/oauth?client_id=...&scope=&response_type=code&state=...&redirect_uri=http://127.0.0.1:8080/accounts/facebook/login/callback/

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Umar Asghar
źródło
W przypadku mojej aplikacji MVC musiałem dodać „/ signin-facebook” do adresu URL witryny… dzięki za wspaniałą wskazówkę!
davaus
Oszczędzasz moje tygodnie @Umar Asghar
kn3l
11

Upewnij się, że „ Domena aplikacji ” i logowanie na Facebooku => Prawidłowe identyfikatory URI przekierowania OAuth . Tam musisz sprawdzić www lub bez www . Lepiej, jeśli używasz z www lub bez dla wszystkich adresów URL w plikach php, html, css i ustawieniach aplikacji Fb.

Inną rzeczą jest to, że jeśli używasz końcówki „/” adresów URL, musisz dodać ten adres URL do ustawień aplikacji z prawidłowymi identyfikatorami URI przekierowania OAuth . Przykład: - https://www.example.com/index.php/ jeśli ten adres URL, jeśli używasz adresu URL przekierowania, musisz ustawić go w ustawieniach aplikacji.

Mam nadzieję, że to pomoże.

Sumith Harshan
źródło
w domenie aplikacji dodajesz zarówno z, jak i bez www
qwertzman
Co masz na myśli mówiąc o tym przyjacielu, jestem trochę zdezorientowany.
TheBAST
6

W przypadku mojej aplikacji węzła

"facebook": {
        "clientID" : "##############",
        "clientSecret": "####################",
        "callbackURL": "/auth/facebook/callback/"
    }

wstaw względny adres URL wywołania zwrotnego

Moje identyfikatory URI przekierowania OAuth w następujący sposób

wprowadź opis obrazu tutaj

Upewnij się, że znak „/” na końcu identyfikatora URI przekierowania uwierzytelniania Facebooka

Te konfiguracje działały dla mnie.

NIKHIL CM
źródło
6

W moim przypadku musiałem tylko upewnić się, że mam moje adresy URL z i bez www dla domeny aplikacji i adresów URL przekierowań :

wprowadź opis obrazu tutaj

W moim przypadku musiałem użyć: signin-facebookpo adresie mojej witryny, dla adresu przekierowania.

Hooman Bahreini
źródło
Czy domeny aplikacji są naprawdę potrzebne? Kiedy testowałem lokalnie, działało bez ustawiania domen aplikacji
Darius.V,
Czy używasz protokołu OAuth i przekierowania?
Hooman Bahreini
tak. Używam pakietu Symfony github.com/knpuniversity/oauth2-client-bundle
Darius.V
3

Zmiana z hauth.done = Facebook na hauth_done = Facebook w prawidłowych identyfikatorach URI przekierowania OAuth naprawiła to za mnie.

girlgeek
źródło
1

Ok Przede wszystkim jest to bardzo wyraźny komunikat o błędzie. Wystarczy spojrzeć, jak wielu deweloperów za tym tęskni, w tym ja. Proszę spojrzeć na zrzut ekranu.

wprowadź opis obrazu tutaj

W obszarze Produkty> Logowanie na Facebooku> Ustawienia

lub po prostu przejdź do tego adresu URL tutaj (zamień YOUR_APP_ID na identyfikator aplikacji lol):

https://developers.facebook.com/apps/YOUR_APP_ID/fb-login/settings/

Jeśli pracujesz, localhost:3000upewnij się, że maszhttps://localhost:3000/auth/facebook/callback

Oczywiście nie musisz mieć statusu na żywo (zielony przełącznik w prawym górnym rogu), ale w moim przypadku wdrażam teraz do heroku i wkrótce zastąpię localhost:3000gohttps://myapp.herokuapp.com/auth/facebook/callback

Oczywiście zaktualizuję adresy URL w Ustawieniach / Podstawowe i ustawienia / Zaawansowane, a także dodam adres URL polityki prywatności w sekcji podstawowej.

Zakładam, że masz poprawnie skonfigurowane inicjatory / devise.rb, jeśli używasz devise i masz gem 'omniauth-facebook', '~> 4.0'zainstalowany odpowiedni klejnot na Facebooku gem 'omniauth', '~> 1.6'i masz niezbędne kolumny w tabeli użytkowników, takie jak uid, obraz i dostawca. Otóż ​​to.

Elias Glyptis
źródło
1

To może komuś pomóc.

Miałem podobny komunikat o błędzie, ale tylko w środowiskach deweloperskich i przejściowych, a nie w środowisku produkcyjnym. Prawidłowe identyfikatory URI przekierowania zostały poprawnie ustawione dla subdomen deweloperskich i pomostowych, a także dla produkcji.

Okazało się, że zapomniałem, że dla tych środowisk używamy testowej aplikacji FB, która jest osobną aplikacją na stronie programisty FB. Musiałem to wybrać i zaktualizować ustawienia.

vargen_
źródło
0

Spróbuj dodać http://openstrategynetwork.com/ sigin-facebook do Ustawień klienta OAuth poprawny adres URL przekierowania wraz z własnym adresem URL przekierowania.

Hung Vu
źródło
0

Pomocnik logowania w Twojej witrynie

$ loginUrl = $ helper-> getLoginUrl ('xyz.com/user_by_facebook/', $ uprawnienia);

oraz w panelu aplikacji na Facebooku (w zakładce Produkty: Logowanie do Facebooka )

Prawidłowe identyfikatory URI przekierowania OAuth również powinny być takie same dla xyz.com/user_by_facebook/

jak wspomniano wcześniej podczas wysyłania żądania z sieci

zohaib
źródło
0

Mieliśmy ten sam problem, taki koszmar.

  1. Upewnij się, że identyfikatory aplikacji i tajne klucze są poprawne. Jeśli do testowania używasz oddzielnych aplikacji deweloperskich, przejściowych i produkcyjnych, identyfikatory aplikacji i tajne klucze są różne dla każdej aplikacji. To jest często problem.

  2. Upewnij się, że adres URL wywołania zwrotnego jest prawidłowo ustawiony w pliku konfiguracyjnym aplikacji (patrz poniżej). Następnie dodaj to jako ten sam adres URL w ustawieniach „ Facebook Login ”, gdzie jest napisane „ Valid OAuth redirect URIs ”. Powinien wyglądać tak (w zależności od środowiska):

http://localhost/auth/facebook/callback http://staging.example.com/auth/facebook/callback http://example.com/auth/facebook/callback

  1. Upewnij się, że domena aplikacji jest ustawiona na prawidłową domenę dla każdego środowiska, w tym „www” i „no-www”. Facebook wymaga również, aby te domeny były zgodne z adresem URL Twojej witryny lub platformy aplikacji. Aby to dodać, musisz wybrać opcję „ Dodaj platformę ”.
kaleazy
źródło
wymóg dopasowania identyfikatorów URI przekierowania do adresu URL strony internetowej nie jest dla mnie możliwy, ponieważ moje identyfikatory URI przekierowania lub zdefiniowane na innym serwerze, a moja witryna jest obsługiwana z innego serwera, jak mogę się do tego zabrać?
Jawad,
0

W moim przypadku integrowałem logowanie Facebooka w samouczku aplikacji Rails. Dodałem http: // localhost: 3000 / adsf do moich prawidłowych identyfikatorów URI przekierowania OAuth, ale aplikacja Rails otworzyłaby adres URL jako http://0.0.0.0:3000 i dlatego spróbowała przekierować do http: //0.0. 0,0: 3000 / asdf . Po dodaniu adresu http://0.0.0.0:3000/asdf do prawidłowych identyfikatorów URI przekierowania OAuth lub przejściu do adresu http: // localhost: 3000 / asdf wszystko działało zgodnie z oczekiwaniami.

jausel
źródło
0

W moim przypadku URI, tak jak zostało to zdefiniowane na FB, było w porządku, ale używałem Spring Security i dodawałem używałem dodawałem; jsessionid = 0B9A5E71DAA32A01A3CD351E6CA1FCDD do mojego URI, więc spowodowało to niedopasowanie.

https://m.facebook.com/v2.5/dialog/oauth?client_id=your-fb-id-code&response_type=code&redirect_uri=https://localizator.org/auth/facebook;jsessionid=0B9A5E71DAA32A01A3CD351E6CA1FCDD&scope=email&state=b180578a-007b-48bc-bd81-4b08c6989e18

Aby uniknąć przepisywania adresu URL, dodałem disable-url-rewriting = "true" do konfiguracji Spring Security, w ten sposób:

<http auto-config="true" access-denied-page="/security/accessDenied" use-expressions="true"
      disable-url-rewriting="true" entry-point-ref="authenticationEntryPoint"/> 

I to rozwiązało mój problem.

lm2a
źródło