2016-05-06 29 views
139

Lasciatemi prima iniziare con dire che ho cercato una risposta a questa domanda per un bel po 'di tempo ...Facebook OAuth "Il dominio di questo URL non è incluso nel dominio del app"

Sono cercando di configurare Facebook OAuth per lavorare con la mia applicazione che viene sviluppata localmente sulla mia macchina. Tutto funzionava perfettamente con l'autorizzazione di Facebook FINO A quando mi sono trasferito dall'utilizzo di localhost a un altro nome di dominio (ancora locale al mio computer.) Ora sto ottenendo il seguente errore.

Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.

mio file hosts contiene 127.0.0.1 photovote.dev (funziona perfettamente)

mio reindirizzamento nella mia app (usando Socialite) è http://photovote.dev/auth/facebook/callback

Nei miei Facebook Impostazioni App ...

  • mia App Domain è photovote.dev
  • l'URL del mio sito è http://photovote.dev/
  • miei OAuth validi reindirizzare URI è http://photovote.dev/auth/facebook/callback

L'URL al momento del messaggio di errore è ..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

Sono ad una perdita di quale sia il problema. ..

screen shot 1
Screen Shot

Screen Shot 2 enter image description here

+2

Ciao dangel, potresti voler offuscare il tuo FB client_id da questo post –

+0

@dangel come hai risolto questo problema ?? sto avendo lo stesso problema, ma non in grado di risolvere. – Ghimire

+0

@Ghimire, nella mia situazione, avevo cambiato l'URL e non ho aggiornato il mio client \ secret. Dalla lettura delle soluzioni di seguito, sembra che potrebbero esserci in realtà diversi motivi diversi che danno tutti lo stesso errore. – dangel

risposta

43

Questo di solito accade se hai inserito i dettagli sbagliati quando hai creato l'App in Facebook. O hai cambiato l'URL di un'app esistente?

Potete ricontrollare le impostazioni della vostra APP in questa pagina?

https://developers.facebook.com/apps

  1. Selezionare la corretta applicazione e fare clic sul pulsante Modifica;

  2. Controllare gli URL & i percorsi sono stati inseriti correttamente e puntano al sito in cui è stato installato il plug-in Ultimate di Facebook.

+3

Ho appena visto cosa hai detto riguardo "hai cambiato l'URL di un'app esistente" è esattamente quello che è successo, e credo che abbia causato la generazione di un nuovo client \ ID segreto – dangel

+0

Ciao, sto anche cercando di implementare fb oauth nella mia app. Ho dato tutti i dettagli su fb app. Tuttavia, l'errore seguente verrà visualizzato durante il reindirizzamento della richiamata. InternalOAuthError: impossibile ottenere il token di accesso a Strategy.OAuth2Strategy._createOAuthError (D: \ node_tutorials \ fb \ node_modules \ tessera OAuth2 \ lib \ strategy.js: 370: 17) in D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js: 166: 45 in D: \ node_tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js: 177: 18 – Anand

+0

Un'altra cosa da provare che ha funzionato per me: prova a cambiare i callback da https a http. Ciò comporta la modifica sia del codice che chiama getLoginUrl() sia della modifica degli URL di callback nelle impostazioni dell'app. I callback non hanno mai funzionato con HTTPS per me, per qualche motivo, nonostante il sito utilizzi HTTPS. – Josh1billion

8

Ho avuto lo stesso problema e proveniva da un ID app client/id errato.

Forse si accende l'app Facebook per "pubblico" o "on-line? Quando lo fa, Facebook crea una nuova applicazione con un nuovo ID App.

È possibile confrontare il 'valore del parametro client_id' nell'URL con quello nella tua bacheca di Facebook.

+0

Tutto ciò che ho fatto è stato modificare il dominio e l'URL del sito in modo che corrispondessero dal cambiare da localhost a photovote.dev. Ho aggiornato l'URI di reindirizzamento sulla mia app e anche nelle impostazioni di Facebook. Potrei semplicemente provare a creare una nuova app – dangel

+0

hmm, credo di aver cambiato qualcosa nelle impostazioni dell'app che ha causato la generazione di un nuovo ID, perché hai ragione che non corrisponde più. Forse quando ho aggiornato l'URL del sito? indipendentemente dal fatto che funzioni di nuovo – dangel

+0

Questo ha funzionato per me. Stavo usando un vecchio ID app in produzione. –

158

Nel caso in cui qualcuno si imbatte in questo ed è alla ricerca di queste impostazioni (come ero)

Devi

  1. Sul lato sinistro, fai clic su "+ Aggiungi Prodotto" e selezionare "Facebook login"(è stato in alto per me)
  2. Vedere le nuove impostazioni disponibili sul lato sinistro
  3. ora avrete queste impostazioni OAuth su quel 'impostazioni prodotto'

enter image description here

Informazione supplementare: Assicurarsi di aggiungere l'URL di richiamata come http://localhost:3000 al campo Valid OAuth redirect URIs nella pagina delle impostazioni di Facebook Login

+2

Questo non è ciò a cui si riferisce il messaggio di errore. Esiste un messaggio di errore specifico relativo agli URI di reindirizzamento OAuth non validi, che non è ciò che sta accadendo qui. Il messaggio si riferisce chiaramente alle Impostazioni »Base» App Domains. Tuttavia, il problema è che anche se i domini corretti sono compilati, il messaggio di errore appare ancora. – fritzmg

+0

@HakamFostok dizionario urbano a parte, Maths regna in ordine superiore per il significato di LHS/RHS https://en.wikipedia.org/wiki/Sides_of_an_equation, in particolare nel mondo della codifica. –

15

Ho avuto lo stesso problema. Ho risolto aggiungendo il mio OAuth reindirizzare URI come argomento per la chiamata di funzione getAccessToken:

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

Se nessun argomento viene inviato in quella funzione l'SDK genera il reindirizzamento URI da sé che dovrebbe funzionare, ma nel mio caso è didn 't.

Spero che questo aiuti qualcuno.

+0

Questo è l'unico modo per farlo funzionare dopo aver spostato il mio sito web da http a https. Anche dopo aver cambiato tutti i domini nelle impostazioni di Facebook Api, non avrebbe funzionato. – phpheini

+1

Questa dovrebbe essere la risposta accettata. Risolve il problema! – tormuto

27

Assicurati che l'app sia pubblica. Cliccare su + Aggiungi prodotto Ora vai ai prodotti => Facebook Login Ora effettuare le seguenti operazioni:

OAuth validi reindirizzare URI: example.com/

Rimuovi autorizzazione Callback URL: https://example.com/facebookapp http://unicodeitsolutions.com/

+0

Per cosa è necessario l'URL "Deauthorize Callback: https: // example.com/facebookapp"? Funzionerà senza quello? – Jordan

+0

L'autorizzazione di revoca dell'URL di prenotazione non è obbligatoria ... quando l'utente annulla l'autorizzazione della nostra app, Facebook ci invierà un ping tramite l'url. –

-1

Most le risposte riguardano l'aggiunta dell'URL al dominio dell'app, ma quando si lavora in una società non si dispone di questi accessi. Per quelli, è possibile ignorarlo semplicemente creando un host virtuale e creando una voce host.


aggiungere questo nel file host (/ etc/hosts) 127.0.0.1 www.your_domain.com

creare un host.I virtuali hanno utilizzato questo per Apache host virtuale

ServerAdmin webmaster @ localhost ServerName www.your_domain.com

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

1

Nella sezione dominio App, si sta scrivendo il dominio app, ma è anche necessario aggiungere il dominio di accesso vale a dire il nome della pagina html in cui si chiede all'utente di effettuare il login. Nel mio caso, lo stavo testando su localhost e il percorso di accesso era localhost/login, se inserisco solo http://localhost.com nella sezione del dominio app, ottengo questo errore. Ma dopo aver aggiunto http://localhost/login.com, l'errore è stato corretto. e anche le impostazioni dell'applicazione sono cambiate nella versione più recente di SDK, in cui non esiste alcuna opzione per il percorso di reindirizzamento OAuth. Devi assegnare il percorso di reindirizzamento direttamente dal lato server, dopo aver ottenuto correttamente il token OAuth.

2

Questa opzione deve essere abilitato portale:

enter image description here

+0

Grazie. Ho avuto lo stesso problema e questo è stato l'interruttore che ho perso. – timeon

+0

Grazie! Questo ha funzionato anche per me (stavo usando Google Firebase. Ho anche dovuto impostare gli "URI di reindirizzamento OAuth validi" all'URI di reindirizzamento OAuth a me assegnato da google per il mio progetto.) – mwang25

1

Questo ha funzionato per me:

Ecco la cosa principale da capire: Facebook sarà sempre verificare la "WWW" dominio. Quindi assicurati che www.your_domain.dev funzioni prima sul tuo browser.

È possibile che se si dispone di più host virtuali sul server locale, alcuni altri host virtuali sovrascrivano "www.your_domain.dev". Quindi per favore controlla quello Apache sceglierà la PRIMA definizione di dominio (o porte, o qualcosa in questi termini - non sono esperto in questo, ma imparato da errori). Una soluzione rapida facile per questo imperativo host virtuale è quello di mettere "www.your_domain.dev definizione host virtuale sulla cima del file 'httpd-vhosts.conf'.

Vai a" /apache/conf/https-vhosts.conf "e mettere questo sulla cima del file:

<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> 

successivo: Se si utilizza il sistema di Windows, modificare il file "" in" hosts C: \ Windows \ System32 \ drivers \ etc "aggiungendo due righe:

127.0.0.1 your_domain.dev 
127.0.0.1 www.your_domain.dev 

Successivo: Riavvia il server Apache e tutto dovrebbe funzionare ora.


Spero che questo possa aiutarti e farti risparmiare tempo. Ho perso quasi un giorno intero a spulciare il web e mi sono tirato fuori i capelli e non ho trovato nulla di utile finché non ho trovato questo.

1

A partire dal 2017-10.

Soluzione che ha risolto il mio problema.

Attualmente questo FB rende questa sorpresa.

...app’s Client OAuth Settings. Make sure Client and Web OAuth Login are on...

enter image description here

Le impostazioni per regolare si trovano qui https://developers.facebook.com/apps/[your_app_itentifier]/fb-login/.

La barra finale è importante. Devono corrispondere nel codice dell'app e nelle impostazioni di amministratore FB. Quindi questa è una configurazione da qualche parte nel codice (vedi sotto come ottenere qualsiasi nome di dominio per un app dev):

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

e qui

enter image description here

Per ottenere qualsiasi nome di dominio per un app su un computer Windows locale, modificare il file host. I nomi personalizzati sono buoni per sbarazzarsi di tutti quelli localhost:8080, 0.0.0.0:30303, 127.0.0.0:8000, così via. Perché alcuni servizi di terze parti come FB a volte non riescono a farti usare i nomi 127.0.0.0.

In Windows 10 hosts file è qui:

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

file di Backup iniziale, creare una copia con nome diverso (. Non funziona in nativo di Windows CMD Io uso Git for Windows, ha molti comandi Unix)

$ cp hosts hosts.bak 

Aggiungere questo 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 

Per eliminare la parte della porta :3000 impostare NGINX, ad esempio.

16

Ecco che cosa ho fatto per risolvere questo problema: enter image description here

In sostanza:

1) Enable "incorporato Browser OAuth Accesso"

2) Disattiva "Utilizzare la modalità Strict per reindirizzamento URI "e immettere un reindirizzamento URI come il mio modo di fare.

3) Lascia tutto il resto delle opzioni così come sono.

4) Salvare le modifiche.

5) Enjoy :)

+0

Questo l'ha risolto per me. Non volevo rendere pubblica la mia app poiché stavo solo facendo un tutorial e testandolo localmente. Grazie @bangbang – PHBeagle

+0

Siete i benvenuti :) – bangbang

+1

fantastico !! risolto per me quando gli altri non ha :) – Justin

2

Click here Code Project! Esempio di codice del progetto. Il suo lavoro per me

enter image description here

+0

aggiungendo il primo risolto il problema! – senty

0

Questo stesso errore Facebook mi è successo in un ambiente di produzione. Il motivo era che avevo 2 app registrate con Facebook (locale, produzione) ma ho codificato l'ID app locale nel codice sorgente e ho dimenticato di spegnerlo per l'ID app di produzione prima della distribuzione.

Le best practice impongono che l'ID dell'app non sia codificato nel codice sorgente ma, in caso contrario, non mismatchare i vari ID delle app di Facebook come ho fatto per errore.

0

Utilizzo del mio server locale.

La semplice aggiunta di http://localhost/my-site come un URL in:

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

ha lavorato per me.