Facebook OAuth „Domena tego adresu URL nie jest uwzględniona w domenie aplikacji”


248

Zacznę od stwierdzenia, że ​​od dłuższego czasu szukałem odpowiedzi na to pytanie ...

Próbuję skonfigurować Facebook OAuth do pracy z moją aplikacją, która jest rozwijana lokalnie na moim komputerze. Wszystko działało idealnie z autoryzacją Facebooka, dopóki nie przeniosłem się z localhostinnej nazwy domeny (nadal lokalnej na mój komputer). Teraz pojawia się następujący błąd.

Nie można załadować adresu URL: Domena tego adresu URL nie jest uwzględniona w domenach aplikacji. Aby móc załadować ten adres URL, dodaj wszystkie domeny i poddomeny swojej aplikacji do pola Domeny aplikacji w ustawieniach aplikacji.

Plik moich hostów zawiera 127.0.0.1 photovote.dev (działa idealnie)

Moje przekierowanie w mojej aplikacji (za pomocą Socialite) to http://photovote.dev/auth/facebook/callback

W ustawieniach aplikacji Facebook ...

  • moja domena aplikacji to photovote.dev
  • mój adres URL witryny to http://photovote.dev/
  • moje prawidłowe identyfikatory URI przekierowania OAuth to http://photovote.dev/auth/facebook/callback

Adres URL w momencie komunikatu o błędzie to ...

https://www.

Brakuje mi problemu ...

Zrzut ekranu 1
Zrzut ekranu

Zrzut ekranu 2 wprowadź opis zdjęcia tutaj


3
Cześć Dangel, możesz zaciemnić swój FB client_id z tego postu
a.benain

@dangel, jak rozwiązałeś ten problem? Mam ten sam problem, ale nie mogę go rozwiązać.
Ghimire,

@ Ghimire, w mojej sytuacji zmieniłem adres URL i nie zaktualizowałem mojego klienta \ secret. Po przeczytaniu poniższych rozwiązań wygląda na to, że może istnieć wiele różnych powodów, z których każdy daje ten sam błąd.
dangel

Odpowiedzi:


82

Zwykle dzieje się tak, jeśli podczas tworzenia aplikacji na Facebooku wprowadziłeś nieprawidłowe dane. A może zmieniłeś adresy URL istniejącej aplikacji?

Czy możesz ponownie sprawdzić ustawienia swojej aplikacji na tej stronie?

https://developers.facebook.com/apps

  1. Wybierz odpowiednią aplikację i kliknij przycisk edycji;

  2. Sprawdź, czy adresy URL i ścieżki są poprawnie wprowadzone i wskazują na stronę, na której zainstalowałeś wtyczkę Ultimate Facebook.


3
Właśnie widziałem to, co powiedziałeś o „zmieniłeś adresy URL istniejącej aplikacji”, właśnie tak się stało i myślę, że spowodowało to wygenerowanie nowego tajnego identyfikatora klienta
dangel

Cześć, próbuję również zaimplementować FB Oauth w mojej aplikacji. Podałem wszystkie szczegóły dotyczące aplikacji fb. Ale następujący błąd pojawi się podczas przekierowania oddzwonienia. InternalOAuthError: Nie można uzyskać tokena dostępu w Strategy.OAuth2Strategy._createOAuthError (D: \ tutoriale_węzłów \ fb \ mod_węzłów \ passport-oauth2 \ lib \ strategia.js: 370: 17) w D: \ tutoriale węzłów \ fb \ mod_węzła \ passport-oauth2 \ lib \ strategia.js: 166: 45 o D: \ node_ tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js: 177: 18
Anand

Kolejna rzecz, którą wypróbowałem, działała dla mnie: spróbuj zmienić swoje wywołania zwrotne z https na http. Obejmuje to zarówno zmianę kodu wywołującego getLoginUrl (), jak i zmianę adresów URL wywołania zwrotnego w ustawieniach aplikacji. Połączenia zwrotne nigdy nie działały dla mnie z HTTPS z jakiegoś powodu, mimo że strona używa HTTPS.
Josh1billion

Mam ten sam problem, ale po otwarciu strony lokalnie; Dodałem 127.0.0.1:8000 do autoryzowanych adresów, ponieważ tak konfigurowana jest moja instalacja easyphp, ale nadal nie działa. Czy mogę testować skrypty FB tylko online?!?
jumpjack

„kliknij przycisk edycji” ummm, który to przycisk?
Alexander Mills

210

Na wypadek, gdyby ktoś się z tym zetknął i szuka tych ustawień (tak jak ja)

Musisz

  1. Po lewej stronie kliknij „+ Dodaj produkt” i wybierz „Logowanie do Facebooka” (dla mnie było na górze)
  2. Zobacz nowe ustawienia dostępne po lewej stronie
  3. Będziesz teraz mieć te ustawienia OAuth w tym „Ustawieniach produktu”

wprowadź opis zdjęcia tutaj

Informacje dodatkowe: pamiętaj, aby dodać adres URL wywołania zwrotnego jak http://localhost:3000w Valid OAuth redirect URIspolu na stronie ustawień logowania do Facebooka


22
Nie o to chodzi w komunikacie o błędzie. Pojawia się konkretny komunikat o błędzie dotyczący prawidłowych identyfikatorów URI przekierowania OAuth , co nie jest tym, co się tutaj dzieje. Wiadomość wyraźnie odnosi się do Ustawienia »Podstawowe» Domeny aplikacji. Problem polega jednak na tym, że mimo wypełnienia poprawnych domen komunikat o błędzie nadal pojawia się.
fritzmg

Oprócz słownika miejskiego HakamFostok, matematyka króluje w wyższym porządku dla znaczenia LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation , szczególnie w świecie kodowania.
Craig Lambie

9
Naprawiłem to dla mnie. Mimo że poprawnie wypełniłem domenę, nie dodałem adresu przekierowania. Dodanie przekierowującego adresu URL rozwiązało problem. Wygląda na to, że w tej chwili FB wysyła niewłaściwy komunikat o błędzie dotyczący tego problemu.
Richard Garside,

pracuję lokalnie i to jest mój adres URL 127.0.0.1/CM/public jaki powinien być mój prawidłowy identyfikator URI przekierowania OAuth?
Youssef Boudaya

1
Działa to dla mnie w api v2.7 i komentarz @ RichardGarside jest dokładny. Nie ustawiłem żadnej wartości, Valid OAuth Redirect URIsa dodanie tej wartości pola rozwiązało zły komunikat o błędzie FB związany z aktualizacją twojego App Domains.
johnsampson,

60

Miałem ten sam problem. Rozwiązałem go, dodając mój identyfikator URI przekierowania OAuth jako argument do wywołania funkcji getAccessToken:

$redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")

Jeśli do tej funkcji nie zostanie wysłany żaden argument, zestaw SDK sam generuje identyfikator URI przekierowania, który powinien działać, ale w moim przypadku nie.

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


2
To jedyny sposób, w jaki mogę sprawić, by działał po przeniesieniu mojej witryny z http na https. Nawet po zmianie wszystkich domen w ustawieniach interfejsu API Facebooka po prostu nie działałoby.
Chris

6
To powinna być zaakceptowana odpowiedź. Rozwiązuje problem!
tormuto,

W moim przypadku sam adres URL nie powinien zawierać pustych parametrów. Kiedy podaję „www.example.com?param”, aby uzyskać getAccessToken, FB zawsze powiedział, że nie pasuje do identyfikatora URI, który podałem getLoginUrl, co, jestem absolutnie pewien, jest dokładnie takie samo. Użycie „www.example.com” nie powoduje takiego błędu.
Chlind

2
Dziękuję Ci . rozwiązane przez to - naprawdę źle z Facebooka, ponieważ wszystkie te błędy są abstrakcyjne / dwuznaczne i nie wiesz, gdzie też wyglądają
digitalzoomstudio

To odpowiada na pytanie.
John

35

Upewnij się, że Twoja aplikacja jest publiczna. Kliknij + Dodaj produkt Teraz przejdź do produktów => Logowanie do Facebooka Teraz wykonaj następujące czynności:

Prawidłowe identyfikatory URI przekierowania OAuth: example.com/

Wycofaj autoryzację oddzwonienia URL: https://example.com/facebookapp http://unicodeitsolutions.com/


1
Do czego jest Deauthorize Callback URL : https://example.com/facebookapppotrzebny? Czy bez tego będzie działać?
Jordan

Wycofanie autoryzacji URL wywołania zwrotnego nie jest obowiązkowy ... gdy użytkownik cofnie autoryzację naszej aplikacji, Facebook wyśle ​​nam ping za pomocą adresu URL.
Sanjoy Kanrar

20

Oto, co zrobiłem, aby rozwiązać ten problem: wprowadź opis zdjęcia tutaj

Gruntownie:

1) Włącz „ Logowanie przy użyciu OAuth przeglądarki

2) Wyłącz „ Użyj trybu ścisłego dla identyfikatorów URI przekierowania ” i wprowadź identyfikator URI przekierowania, tak jak to zrobiłem.

3) Pozostaw wszystkie pozostałe opcje bez zmian.

4) Zapisz zmiany.

5) Ciesz się :)


To rozwiązało dla mnie. Nie chciałem upubliczniać mojej aplikacji, ponieważ robiłem samouczek i testowałem ją lokalnie. Dziękuję @bangbang
PHBeagle

1
Dla mnie nie można wyłączyć trybu ścisłego URI przekierowań .
fdehanne

8

Miałem ten sam problem i pochodzi z niewłaściwego ID klienta / identyfikatora aplikacji Facebook.

Czy zmieniłeś aplikację Facebook na „publiczną” lub „online”? Facebook tworzy nową aplikację z nowym identyfikatorem aplikacji.

Możesz porównać wartość parametru „client_id” w adresie URL z wartością na pulpicie nawigacyjnym Facebooka.


Wszystko, co zrobiłem, to zmienić domenę i adres URL witryny, aby odpowiadały zmianie z localhost na photovote.dev. Zaktualizowałem identyfikator URI przekierowania w mojej aplikacji, a także w ustawieniach Facebooka. Mogę po prostu spróbować utworzyć nową aplikację
dangel

hmm, chyba zmieniłem coś w ustawieniach aplikacji, co spowodowało wygenerowanie nowego identyfikatora, ponieważ masz rację, że już się nie zgadza. Może kiedy zaktualizuję adres URL witryny? bez względu na to, że znowu działa
dangel

To zadziałało dla mnie. Używał w produkcji starego identyfikatora aplikacji.
Marcus W

8

Sposób, w jaki to naprawiłem: poszedłem do pola tekstowego URI przekierowania poprawnego OAuth i ustawiłem dokładny adres URL, a nie tylko domenę :

przed: https://my-website.com

po: https://my-website.com/facebookoauth/facebooklogin

(adres URL może być inny w Twoim przypadku, sprawdź go w pasku adresu przeglądarki).

Było to spowodowane ustawieniem Use Strict Mode for Redirect URIs, które zostało zablokowane w pozycji Yes.


Wielkie dzięki za to. To rozwiązało mój problem
vickris

7

Nie można załadować adresu URL: Domena tego adresu URL nie jest uwzględniona w domenach aplikacji. Aby móc załadować ten adres URL, dodaj wszystkie domeny i poddomeny swojej aplikacji do pola Domeny aplikacji w ustawieniach aplikacji.

Miałem ten problem dzisiaj, uważam, że dokumentacja na Facebooku i SDK są lekceważące i aroganckie wobec innych programistów.

Oprócz posiadania „domen aplikacji” w dwóch różnych lokalizacjach bez dużej ilości informacji (3, jeśli dodasz platformę „internetową”), musisz także przejść do aplikacji / logowania do Facebooka / ustawień i dodać adres URL przekierowania w obszarze Prawidłowe identyfikatory URI przekierowania OAuth

Błąd mówi NIC o ustawieniach oauth.


1
Tak, musiałem też zrobić ten dodatkowy krok. Podzielam twoje poglądy na temat dokumentacji!
Magnus Smith

6

Stan na dzień 2017-10.

Rozwiązanie, które rozwiązało mój problem.

Obecnie FB czyni tę niespodziankę.

... Ustawienia OAuth klienta aplikacji. Upewnij się, że logowanie klienta i uwierzytelnianie sieciowe OAuth są włączone ...

wprowadź opis zdjęcia tutaj

Ustawienia do dostosowania znajdują się tutaj https://developers.facebook.com/apps/[your_app_itentifier]/fb-login/ .

Końcowy ukośnik jest ważny. Muszą być zgodne w kodzie aplikacji i ustawieniach administratora FB. To jest konfiguracja gdzieś w kodzie (patrz poniżej, jak uzyskać dowolną nazwę domeny dla aplikacji deweloperskiej):

{
    callbackURL: `http://my_local_app.com:3000/callback/`, // trailing slash
}

i tu

wprowadź opis zdjęcia tutaj

Aby uzyskać dowolną nazwę domeny dla aplikacji na lokalnym komputerze z systemem Windows, edytuj hostplik. Nazwy niestandardowe są dobre, aby pozbyć się wszystkich tych localhost:8080, 0.0.0.0:30303, 127.0.0.0:8000, itd. Ponieważ niektóre usługi stron trzecich, takie jak FB, czasami nie pozwalają na używanie 127.0.0.0nazw.

W systemie Windows 10 hostsplik jest tutaj:

C:\Windows\System32\drivers\etc\hosts

Utwórz kopię zapasową pliku początkowego, utwórz kopię o innej nazwie (nie działa w natywnym systemie Windows CMD. Używam Git dla Windows , ma wiele poleceń Uniksa)

$ cp hosts hosts.bak

Dodaj to w hosts

127.0.0.1  myfbapp.com # you can access it in a browser http://myfbapp.com:3000
127.0.0.1  www.myotherapp.io # In a browser http://www.myotherapp.io:2020

Aby pozbyć się części portu :3000, na przykład skonfiguruj NGINX.


Dzięki za to, nie miałem pojęcia, że ​​końcowe cięcie było wymagane!
Andy Holmes

w dniu 11 maja 2018 r. adres zwrotny w aplikacjach i prawidłowe identyfikatory URI przekierowania na Facebooku muszą być takie same. i trzeba jednak https.
Yuda Prawira

Końcowe cięcie oszczędza mój czas. Dzięki!
HyoJin KIM


6

Przez większość czasu dzieje się tak, gdy nie wstawia prawidłowego adresu URL przekierowania OAuth w sekcji produktu pulpitu nawigacyjnego FB. Sugeruję postępować zgodnie z poniższymi instrukcjami

01. Sprawdź, czy podstawowe ustawienie aplikacji jest w porządku z poniższym zdjęciem z tobą

wprowadź opis zdjęcia tutaj

02. sprawdź, czy dodałeś produkt

Jeśli nie, możesz łatwo dodać zaloguj się, klikając + sinus, jak pokazuję poniżej.

Jeśli tak, właśnie przejdziemy do ustawień produktu. wprowadź opis zdjęcia tutaj

03. Sprawdź, czy podałeś prawidłowy adres URL przekierowania OAuth

To proste oznacza, co powinno się po zalogowaniu. Nie jest niczym innym, jak to, że oddzwaniasz URl. Na moim poniższym zdjęciu dodałem kilka adresów URL przekierowań. wprowadź opis zdjęcia tutaj

  1. masz jeszcze jakiś problem Obejrzyj mój film -> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s

2-letnie pytanie i linki do zewnętrznych stron nie powinny być podstawową treścią odpowiedzi.
zzxyz

6

Facebook niedawno wyłączył przycisk przełączania „ Użyj trybu ścisłego dla przekierowań URI ”, więc musisz dodać dokładny identyfikator URI, który jest wywoływany po naciśnięciu przycisku logowania. W moim przypadku było tak, jak pokazano na zrzucie ekranu. To rozwiązało problem dla mnie :)

wprowadź opis zdjęcia tutaj



5

W moim przypadku musiałem jedynie włączyć logowanie OAuth w przeglądarce osadzonej

wprowadź opis zdjęcia tutaj


Używałem również logowania w przeglądarce, więc miałem ten sam problem. Jest też pole wprowadzania poniżej, w którym musiałem umieścić mój dokładny identyfikator URI przekierowania.
absin

4

Nic tak naprawdę dla mnie nie działało, dopóki nie zaktualizowałem używanej wersji zestawu SDK. Zacząłem od 5.0. Nawet 5.4.0 też by nie działało. Kiedy zaktualizowałem do wersji 5.6.2, działało bezbłędnie, mimo że w dziennikach zmian nie było nic istotnego!


1
Właśnie miałem ten problem! Używałem wersji „5.4.2” i zaktualizowałem ją do wersji „5.6.2”
John Smith,

2

Ta opcja powinna być włączona w portalu:

wprowadź opis zdjęcia tutaj


Dzięki. Miałem ten sam problem i tęskniłem za przełącznikiem.
timeon

Dzięki! To również zadziałało dla mnie (korzystałem z Google Firebase. Musiałem także ustawić „Prawidłowe URI przekierowania OAuth” na URI przekierowania OAuth podanego mi przez Google dla mojego projektu).
mwang25

2

Gdyby to pomogło komukolwiek innemu, zaczęło się to zdarzać na starszej stronie, gdy „Prawidłowe URI przekierowania OAuth” stało się obowiązkowe. Witryna nadal używała zestawu SDK PHP V4 i problem został rozwiązany przez aktualizację do zestawu SDK V5.


1

W sekcji Domena aplikacji piszesz swoją domenę aplikacji, ale musisz także dodać domenę logowania, tj. Nazwę strony HTML, na której pytasz użytkownika o logowanie. W moim przypadku testowałem to na localhost i trasą logowania był localhost / login, jeśli wstawię tylko http://localhost.com w sekcji domeny aplikacji, otrzymuję ten błąd. Ale po dodaniu http: //localhost/login.com błąd został naprawiony. a także ustawienia aplikacji zmieniły się w nowszej wersji zestawu SDK, w którym nie ma opcji trasy przekierowania OAuth. Musisz przypisać trasę przekierowania bezpośrednio po stronie serwera, po pomyślnym pobraniu tokenu OAuth.


1

To działało dla mnie:

Oto najważniejsza rzecz do zrozumienia: Facebook zawsze sprawdza domenę „ WWW ”. Upewnij się więc, że www.twoja_domena.dev działa najpierw w przeglądarce.

Możliwe, że jeśli masz wiele hostów wirtualnych na serwerze lokalnym, niektóre inne hosty wirtualne zastępują „ www.twoja_domena.dev ”. Więc sprawdź to. Apache wybierze PIERWSZĄ definicję domeny (lub portów lub coś w tych kategoriach - nie jestem ekspertem w tej dziedzinie, ale uczę się na błędach). Łatwym szybkim rozwiązaniem tego zastąpienia wirtualnego hosta jest umieszczenie „ www.twoja_domena.dev zastąpienia wirtualnego hosta definicji na samej górze pliku„ httpd-vhosts.conf ”.

Przejdź do „ /apache/conf/https-vhosts.conf ” i umieść to na samej górze pliku:

<VirtualHost *:80>
<Directory "C:/your_app_folder_path/">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
</Directory>
ServerName your_domain.dev
ServerAlias your_domain.dev
DocumentRoot "C:/your_app_folder_path/"
</VirtualHost>

###### FOR SSL #####
<VirtualHost *:443>
    DocumentRoot "C:/your_app_folder_path/"
    ServerName your_domain.dev
    ServerAlias www.your_domain.dev
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/your_app_folder_path/">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>

Dalej: Jeśli używasz systemu Windows, edytuj plik „hosts” w „C: \ Windows \ System32 \ drivers \ etc”, dodając dwa wiersze:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

Dalej: Uruchom ponownie serwer Apache i wszystko powinno już działać.


Mam nadzieję, że to ci pomoże i zaoszczędzi Twój czas. Zmarnowałem prawie cały dzień na szukanie w Internecie, wyciągając włosy i nie mogłem znaleźć nic pomocnego, dopóki tego nie znalazłem.


1

Miałem ten sam problem ... problem występuje w wersji PHP SDK 5.6.2 i poprawka polegała na edycji następującego pliku:

facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

zmień tę linię

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code']);

do

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code','enforce_https']);


0

Ten sam błąd na Facebooku przytrafił mi się w środowisku produkcyjnym. Powodem było to, że zarejestrowałem 2 aplikacje na Facebooku (lokalne, produkcyjne), ale na stałe zakodowałem identyfikator aplikacji lokalnej w kodzie źródłowym i zapomniałem go wyłączyć na identyfikator aplikacji produkcyjnej przed wdrożeniem.

Zgodnie z najlepszymi praktykami nie należy zapisywać identyfikatora aplikacji na stałe w kodzie źródłowym, ale jeśli tak, nie należy dopasowywać różnych identyfikatorów aplikacji na Facebooku, jak to zrobiłem.


0

Korzystanie z mojego lokalnego serwera.

Wystarczy dodać http://localhost/my-sitejako adres URL w:

https://developers.facebook.com/apps/YOUR-APP-ID/fb-login/

pracował dla mnie.


0

Problem i odpowiedzi ciągle się zmieniają, gdy FB zaostrza procedurę logowania. Dzisiaj zacząłem otrzymywać ten horror: „Domena tego adresu URL nie jest uwzględniona w domenach aplikacji. Aby móc załadować ten adres URL, dodaj wszystkie domeny i poddomeny swojej aplikacji do pola Domeny aplikacji w ustawieniach aplikacji”.

Odpowiedź brzmiała: teraz FB chce pełnego URI przekierowania. Więc dla mnie, gdzie kiedyś była tylko https://www.example.com , teraz chce https://www.example.com/auth/facebook/callback . Musi to znaleźć się w polu „Prawidłowe identyfikatory URI przekierowania OAuth” (logowanie programisty / Facebooka -> ustawienie)



0

pierwszy krok: użyj całego adresu URL certyfikatu https://example.in lub ssl, nie używaj http://example.in

drugi krok: ustawienie aplikacji faceboook-> ustawienie podstawowe-> dodaj swoją domenę lub subdomenę

trzeci krok: ustawienie logowania do aplikacji faceboook-> Prawidłowe identyfikatory URI przekierowania OAuth-> dodaj swój adres URL przekierowania po zalogowaniu

czwarty krok: ustawienie aplikacji faceboook-> ustawienia zaawansowane-> Menedżer domeny-> dodaj swoją nazwę domeny

wykonaj ten krok, a następnie użyj identyfikatora aplikacji, wersji aplikacji, tajnej aplikacji do konfiguracji


0

w rozszerzeniu Loginu społecznościowego Magento 2 musisz skopiować prawidłowe identyfikatory URI przekierowania OAuth z panelu i dodać link do pola Prawidłowe identyfikatory URI przekierowania OAuth na stronie Ustawienia OAuth klienta na developers.facebook.com



-1

Większość odpowiedzi dotyczy dodawania adresu URL do domeny aplikacji, ale pracując w firmie, nie masz do nich dostępu. W tym celu możesz to obejść, po prostu tworząc wirtualny host i wprowadzając wpis hosta.


dodaj to do pliku hosta (/ etc / hosts) 127.0.0.1 www.twoja_domena.com

Utwórz wirtualny host. Użyłem tego do wirtualnego hosta Apache

ServerAdmin webmaster @ localhost NazwaSerwera www.twoja_domena.com

    ProxyPass / http://localhost:5006/
    RewriteMap  lc int:tolower
    LogLevel debug

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.