2011-01-14 23 views
75

Sto cercando di integrare il mio progetto con Facebook. All'inizio sto facendo piccoli passi e sto solo cercando di accedere, ottenere una sessione su Facebook e ottenere alcuni dati utente. Sto sviluppando localmente quindi le mie impostazioni delle applicazioni di Facebook sono:Errore API Facebook 191

site URL: http://127.0.0.1:8888/mySite/ 

L'URL tela è lo stesso come sopra. Non ho specificato un dominio del sito.

Tuttavia, quando si fa clic sul pulsante di accesso, ottengo un errore:

API Error Code: 191 
API Error Description: The specified URL is not owned by the application 
Error Message: redirect_uri is not owned by the application. 

Al momento non ho scritto alcun codice lato server a che fare con redirect, ecc tutto quello che ho fatto è aggiungere l'SDK JavaScript basato sul tutorial in Facebook for Websites.

Cosa ho fatto di sbagliato? Ovviamente ha qualcosa a che fare con le impostazioni delle mie applicazioni di Facebook, ma non riesco a vedere cosa!

+0

Per i lettori: si prega di notare che questa domanda e la risposta accettata si applicano sia al server locale e sviluppo/test, e real server e URL! – Stefano

risposta

87

UPDATE:
Per rispondere al Codice API errore: 191
Il redirect_uri dovrebbe essere uguale (o relativa) per l'URL del sito.
enter image description here

Suggerimento: URL uso base, invece di URL completi che puntano a pagine specifiche.

negativa: Per esempio, se si utilizza www.mydomain.com/fb/test.html come l'URL del sito e avere www.mydomain.com/fb/secondPage.html come redirect_uri questo vi darà l'errore 191.

CONSIGLIATO: Così, invece hanno l'URL del sito impostato su un URL di base come: www.mydomain.com/ O www.mydomain.com/fb/.


ho passato il Facebook Python sample application oggi, e io ero scioccati è stato affermando chiaramente che è possibile utilizzare http://localhost:8080/ come URL del sito se si sta sviluppando a livello locale:

Configure the Site URL, and point it to your Web Server. If you're developing locally, you can use http://localhost:8080/

Mentre io era sicuro che non puoi farlo, in base alla mia esperienza (molto vecchio test però) sembra che in realtà CAN prova localmente la tua applicazione Facebook!

così ho preso una vecchia applicazione di mio e modificati il ​​suo nome, URL del sito e l'URL della tela di canapa: URL sito: http://localhost:80/fblocal/

Ho scaricato l'ultima Facebook PHP-SDK e lo gettai nella mia cartella xampp/htdocs/fblocal/.

Ma ho ricevuto lo stesso errore del tuo!Ho notato che XAMPP sta facendo un reindirizzamento automatico al http://localhost/fblocal/ così ho cambiato l'impostazione semplicemente http://localhost/fblocal/ e l'errore è stato andato MA ho dovuto rimuovere l'applicazione (da privacy settings) e reinstallare la mia domanda ed ecco i risultati:
alt text

Dopo di che, ha chiesto il permesso publish_stream, e sono stato in grado di pubblicare il mio profilo (usando il PHP-SDK):

$user = $facebook->getUser(); 
if ($user) { 
    try { 
     $post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!')); 
    } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 

Risultati: alt text

+1

Um, quindi ora sono confuso. Che dire di questa risposta: http://stackoverflow.com/questions/4633846/facebook-app-development – musoNic80

+1

I * GUESS * ciò che intendeva è che puoi testare la tua applicazione localmente, ma qualsiasi interazione con facebook richiederà la pubblicazione del tuo sito web/dominio. per esempio se hai un gioco in flash, puoi testarlo localmente prima attraverso esso su tela FB. Per quanto riguarda il codice, spiega come puoi proteggere il tuo sito ** live ** dall'accesso finché lo sviluppo non è terminato e sei pronto per andare in diretta. – ifaour

+2

Fin qui tutto bene! Ho fino alla finestra di accesso e chiedere permessi! Non ho ancora avuto la possibilità di testare l'acquisizione di alcuni dati reali, ma non vedo l'ora che la risposta venga accettata quando lo faccio! Woohoo! – musoNic80

8

Questo è solo a causa di un errore URL.

Qualsiasi sia l'URL del sito Web specificato deve essere corretto.

ho detto URL del sito web come http://localhost:3000/ e dominio come localhost, ma nel mio browser correvo http://0.0.0.0:3000/.

Quando ho eseguito server come localhost:3000 E 'risolto il problema.

Come ho detto, l'URL del sito come localhost Facebook reindirizza allo stesso, se stiamo utilizzando 0.0.0.0:3000, aumenterà l'errore che "Data URL non è consentito dalla configurazione dell'applicazione".

2

Anche io sto affrontando lo stesso problema quando utilizzo il metodo di autenticazione di Facebook. Ma rettifico il problema con le seguenti modifiche in Facebook API (Apps >> My App >> Basic).

  1. ho rimosso l'url che ho dato in ===>App su Facebook (Canvas URL)
  2. ho dato sito url solo in ===>Sito web con Facebook Login opzione

Poi ho dato AppId e App Secret nella mia pagina web.

Quindi, facendo clic sul pulsante di accesso, E chiedere autorizzazioni di accesso allora reindirizzare per dare url (Sito web con Facebook Login).

0

avuto lo stesso problema:

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev'); 
$facebook->getLoginUrl($params); 

Quando ho cambiato il redirect_uri dalla pagina devloper alla pagina dal vivo, 191 Errore si avvicinò.

Così ho cancellato i $ params:

$facebook->getLoginUrl(); 

Dopo l'app-richiesta ora FB reindirizza al app URL stesso fe: my.domain.com

quello che faccio ora è il check-in dell'indice .php della mia app se sono dentro ifbame FB o no. In caso contrario, reindirizzare alla pagina FB live per favore.:

$app = 'facebook.com/pages/foobar-live'; 
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false; 
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request']))) { 
    echo '<script>window.parent.location = "'.$app.'";</script>'; 
    die(); 
} 
0

Ho notato, inoltre, che anche se si specifica il vostro sito web sotto secion - sito web con Facebook Login -> URL del sito, come ad esempio http://example.com, ma se la sezione App Domains è vuota e apri il sito web come www.example.com riceverai anche questo errore. Per evitarlo nella sezione "App Domains" scrivi example.com, che consentirà i sottodomini, come www.example.com, qualcosa.esempio.com ecc.

11

Per me, era un dominio app mancante. Accedi all'app e assicurati di impostare la radice del tuo sito come dominio dell'app. Vedi screenshot.

app domains is in the basic settings of your app

+0

Questa risposta non è correlata alla domanda poiché il poster originale si sta sviluppando localmente e il campo App Domains non consente né localhost né 127.0.0.1: http://flic.kr/p/kHqiny – Vince

+4

La domanda del richiedente è già stata risolta. Questa risposta è pensata per essere utile a persone con un problema simile, che pensano che questa domanda li aiuterà in base al titolo coraggioso. Adesso può. –

0

qualcosa che mi piacerebbe aggiungere, dal momento che questo è l'errore 191 prima domanda su google:

Quando il reindirizzamento su Facebook invece del tuo sito per una richiesta firmata, potresti riscontrare questo errore se l'utente ha una navigazione protetta e la tua app reindirizza a Facebook senza SSL.

0

Lavorare localmente ... Non riuscivo a far funzionare l'api dei feed, ma la share api ha funzionato praticamente senza problemi.