App Facebook: localhost non funziona più come dominio dell'app


94

Ho scritto un gioco per Facebook usando Rails e jQuery. Da quando ho iniziato a utilizzare l'SDK Javascript di Facebook, l'utilizzo di localhost come dominio dell'app sembrava funzionare perfettamente. Sono stato in grado di testare il mio gioco sia localmente che su Heroku.

Nell'ultimo giorno, sembra che Facebook abbia apportato un grande aggiornamento alla loro interfaccia utente per sviluppatori. Ora se aggiungo localhost come dominio dell'app, mi dà il seguente errore:

Deve essere derivato da URL Canvas, URL Secure Canvas, URL del sito, URL del sito mobile, URL della scheda della pagina o URL della scheda della pagina protetta. Controlla e correggi i seguenti domini: localhost

Anche il mio gioco ora non funziona localmente e ricevo un errore quando l'SDK Javascript accede all'utente:

Codice errore API: 191 Descrizione errore API: l'URL specificato non è di proprietà dell'applicazione Messaggio di errore: redirect_uri non valido: l'URL fornito non è consentito dalla configurazione dell'applicazione.

Questo non accade quando distribuisco il mio gioco, poiché herokuapp.com è considerato un dominio app valido.

Come dovrei sviluppare e testare il mio gioco se non posso più utilizzare localhost o 127.0.0.1?


Quali valori hai per URL canvas, URL Secure Canvas, URL del sito, URL del sito per dispositivi mobili, URL della scheda della pagina o URL della scheda della pagina protetta?
Igy

2
hey ragazzi ho capito, dovete creare una nuova "app di prova", dovrebbero fottutamente menzionarlo nella pagina delle impostazioni dell'app, 1h di ricerca per farlo finalmente funzionare su localhost: port
Louis Grellet

@LouisGrellet, Bene, ricevo "I domini di primo livello non sono consentiti". Come hai detto,
fanculo

1
"Nelle impostazioni oAuth del client, dove viene visualizzato Usa modalità rigorosa per gli URI di reindirizzamento, assicurati che sia impostato su No e che l'hit salvi." - wp-native-articles.com/blog/news/…
eflat

Risposte:


241

Il protocollo sembra continuare a cambiare e la risposta accettata non ha funzionato per me oggi. Nel caso in cui aiuti altri ricercatori, questo è ciò che ha funzionato per me:

  • Tutte le modifiche sono state apportate nella pagina Impostazioni nella scheda Di base

1.) Al centro, sotto la prima casella di opzioni, fai clic su "+ Aggiungi piattaforma" e scegli "Sito web" (o qualsiasi altra cosa sia appropriata per la tua app).

2.) Nella casella visualizzata per il sito Web che hai appena aggiunto: URL del sito: http://localhost:3000/

3.) Nella casella sopra (Impostazioni => Base): App Domain: localhost

4.) In basso a destra, fai clic su "Salva modifiche"

5.) Assicurati di aver copiato e incollato correttamente l'ID dell'app nel tuo codice. (L'ID si trova nella prima casella di quella pagina se ne hai bisogno di nuovo.)


1
Grazie per aver aggiornato la risposta. In effetti, sembra che la risposta originale non funzioni più (ancora, grazie per le risposte originali Camilo e rareclass). È un peccato che Facebook non sembri mai annunciare questi cambiamenti.
Ravenstine

1
Facebook deve averlo risolto di recente per funzionare, localhostpoiché in precedenza non funzionava. Grazie per la buona risposta.
dbasch

25
Tieni presente che il tuo URL deve essere elencato anche in Impostazioni> Avanzate> URI di reindirizzamento OAuth validi .
Kara Brightwell

3
Sembra che non funzioni più :( Ottengo URL bloccato: questo reindirizzamento non è riuscito perché l'URI di reindirizzamento non è inserito nella whitelist nelle impostazioni OAuth del client dell'app. Assicurati che il client e l'accesso Web OAuth siano attivi e aggiungi tutti i domini dell'app come OAuth valido Reindirizzamento URI.
Maria Ines Parnisari

3
Non sei più autorizzato a utilizzare "http". Deve essere "https".
iJames

31
  1. Vai alla pagina delle impostazioni della tua app su http://developers.facebook.com
  2. Fai clic sulla freccia del menu a discesa in alto a sinistra (accanto al nome della tua app) e fai clic su "Crea app di prova" e assegnale un nome
  3. In Impostazioni> Di base di quella nuova app di test, imposta i domini dell'app come "localhost"
  4. Imposta anche l'URL del sito web come " http: // localhost: 8888 " (o qualunque porta tu stia utilizzando).
  5. IMPORTANTE: questa app ha un ID app e un segreto app diversi dalla tua applicazione online. Quindi, ultimo passaggio: assicurati di aggiornare il codice che si trova nel tuo localhost con l'ID app dell'app di test e il segreto dell'app. Al contrario, il codice che si trova nel server live dovrebbe utilizzare l'ID e il segreto dell'app principale.

Soluzione più sensata / moderna rispetto al tentativo di configurare il tuo account prod per funzionare anche con un dev env.
Carl Edwards il

13

Puoi comunque testare la tua app senza distribuirla su un server remoto come heroku. Il trucco è aggiornare il etc/hostsfile in questo modo:

127.0.0.1 mydomain.com

Quindi, nelle impostazioni dell'app Facebook, digita [ http: //] miodominio.com, senza "[" e "]"

Per me ha funzionato in questo modo


Non funzionerà se utilizzi una porta non standard, che di solito è ciò che le persone fanno se sviluppano molte app in parallelo.
mgol

1
Funzionerà, ho usato python -m SimpleHTTPServer per servire sulla porta 8000 e example.com:8000/test-facebook.html , fornito il risultato atteso. Presumo che tu abbia registrato 127.0.0.1 example.com in / etc / hosts
Patrick

Buono a sapersi! Quindi sembrano ignorare il porting allora, strano.
mgol

9

Per tutti coloro che si stanno muovendo con questo nel 2017. L'interfaccia è cambiata di nuovo. Volevo commentare questo alla risposta ma non ho abbastanza reputazione. L'URL localhost della tua app ora deve essere copiato in tre posizioni. Attualmente (26 ottobre 2017) la sequenza è:

1.) Fare clic su "Impostazioni" nel menu a sinistra.

2.) Al centro, sotto la prima casella di opzioni, fai clic su "+ Aggiungi piattaforma" e scegli "Sito web" (o qualsiasi altra cosa sia appropriata per la tua app).

3.) Nella casella che appare per il sito web che hai appena aggiunto copia l'URL del tuo sito localhost (ad esempio http: // localhost: 3000 / )

4.) Nella casella sopra il "Dominio app" copia lo stesso URL

5.) In basso a destra, fai clic su "Salva modifiche"

6.) Nel menu a sinistra sotto "Prodotti" fare clic su "Accesso Facebook" (o aggiungerlo tramite "+ Aggiungi prodotti" se non è disponibile)

7.) Ora sei nelle impostazioni di accesso a Facebook. Copia lo stesso URL nel campo "URI di reindirizzamento OAuth validi"

Questo dovrebbe funzionare.


2
Tieni presente che Facebook non consente più "http" per URI di reindirizzamento OAuth validi
OmNiOwNeR

5

Basta aggiungere localhost come URL canvas o URL del sito mobile, questo ti consentirà di avere sia localhost che herokuapp.com nelle impostazioni del dominio dell'app. Quindi, una volta che la tua app è in produzione, rimuovila.


5

Questo è il modo sbagliato. È necessario creare un'applicazione di test utilizzando la scheda Test nelle impostazioni dell'app. E poi puoi inserire l'URL della tua fase di sviluppo (ad esempio localhost) nella tua applicazione.


1
ho creato un'app di prova ma non ha funzionato. Qualche dettaglio in più?
Roger Gajraj

Sì, credo che questo sia il modo giusto, vedi le istruzioni complete stackoverflow.com/a/38173031/3625739
georgios

5

Soluzione che utilizza Firebase

Per far funzionare questo localhostport, 3000ho fatto quanto segue:

  1. Crea app

Crea app di prova

  1. Ora seleziona "+ Crea app di prova" dal menu a discesa con le frecce (in alto a sinistra).

inserisci qui la descrizione dell'immagine

  1. Aggiungi localhostai domini delle app

inserisci qui la descrizione dell'immagine

  1. Aggiungi http://localhost:3000/all'URL del sito selezionando "+ Aggiungi piattaforma"

inserisci qui la descrizione dell'immagine

Fino a questo punto avevo seguito tutte le risposte precedenti presentate qui, ma niente ha funzionato.

Così...

  1. Nel menu a sinistra, seleziona "Aggiungi prodotto"

  2. Aggiungi "Accesso Facebook"

Ti verrà presentato un carosello del flusso di lavoro, con dominio predefinito http://localhost:3000/, fai clic su "continua" fino alla fine.

  1. Seleziona "Accesso Facebook> Impostazioni" dal menu Prodotto.

  2. Inserisci il tuo URI di reindirizzamento OAuth Firebase (trovato quando abiliti l'accesso a Facebook nella tua console Firebase https://console.firebase.google.com , esempio sotto)

inserisci qui la descrizione dell'immagine

  1. Incolla l'URI e salva.

inserisci qui la descrizione dell'immagine

Fatto.


2

Prova a utilizzare l'URL con la porta, ad es

    http://localhost:8000/

Stavo riscontrando lo stesso problema e ho trovato questa soluzione in questo momento.


1
È necessario aggiungere "App su Facebook" come piattaforma e aggiungere localhost: 8000 nell'URL di Canvas
Tachun Lin

1

Questo funziona per me in heroku, la cosa localhost non ha funzionato (per me). spero possa essere d'aiuto

1.) Al centro, sotto la prima casella di opzioni, fai clic su "+ Aggiungi piattaforma" e scegli "Sito web" (o qualsiasi altra cosa sia appropriata per la tua app).

2.) Nella casella che compare per il sito web che hai appena aggiunto: URL del sito: http://MYAPP.herokuapp.com/ (sostituisci MYAPP con il nome della tua app)

3.) Nella casella sopra (Impostazioni => Base): App Domain: MYAPP.herokuapp.com (sostituisci MYAPP con il nome della tua app)

4.) In basso a destra, fai clic su "Salva modifiche"


1

Solo una nota per alcuni altri che potrebbero essere alle prese con questo come me. Non sono riuscito a farlo funzionare con le app "di prova". Utilizzando le impostazioni effettive della mia app (e semplicemente aggiungendo

"http://localhost:3000/"

al mio URL canvas) ha funzionato come suggerito da tutti gli altri. Sembra che le app di prova non siano uguali alle app reali.


1

Ho riscontrato un problema con la mia app Rails che di solito eseguo con http: // localhost: 3000 perché Facebook ora richiede il reindirizzamento OAuth valido per utilizzare https.

Per utilizzare https localmente, ho utilizzato [ngrok] [1] che consente di utilizzare https fornendo un tunnel. Per fare questo:

  1. Sono andato al loro sito web e ho scaricato il loro programma
  2. Ho estratto il file per il programma
  3. Nella mia console, sono entrato nella directory in cui è stato estratto ngrok e ho inserito "grok http 3000" sul mio computer Windows, altri potrebbero usare "./grok http 3000"
  4. Dopo averlo inserito, ngrok ha fornito un indirizzo https che ho inserito nel campo Valid OAuth Redirect URIs in Facebook
  5. Quindi ho avviato il mio server e sono stato in grado di accedervi utilizzando quell'indirizzo https invece di localhost: 3000

1

per fare i test locali tutto quello che devi fare è spegnere l'app, o mettere l'app facebook in modalità sviluppo. Quindi Facebook ti consentirà di accedere all'app da solo


0

Per me ha funzionato così:

Configurazione della dashboard dell'app Facebook:

* Nella scheda "base":

1) Lasciando vuoto il dominio dell'app.

2) Cancellazione di qualsiasi piattaforma. Significato: nessun sito web nessuna piattaforma di tela. (quindi nessun campo URL del sito da riempire)

* Nella scheda "Avanzate":

3) Ho inserito gli URI di reindirizzamento OAuth validi:

http://localhost/myappfolder/redirect.php

4) per quanto riguarda il mio codice, insdie my c: /xampp/htdocs/localhost/myappfolder/index.php (questo file crea loginURL):

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

all'interno del file redirect.php:

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

e ho una sessione! finalmente! non c'è bisogno di impiccarmi alla fine: P

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.