2010-04-22 17 views
5

Sto utilizzando la libreria PHP per l'API Graph (http://github.com/facebook/php-sdk) ma sono un po 'confuso su come funziona (o meno).Utilizzo delle API del grafico di Facebook Libreria PHP

Voglio solo autenticare l'utente e recuperare l'ID utente. Quello che voglio veramente sapere è cosa fare una volta che l'utente ha effettuato l'accesso a Facebook e restituito al mio sito. Ci sono dati chiamati "sessione" nell'URL. Questo deve essere memorizzato per ottenere continuamente l'ID utente? Non è davvero evidente, per me, dagli esempi o dalla (mancanza di) documentazione.

Inoltre, sarebbe più semplice ritagliare completamente la libreria PHP e gestire la risposta da solo, memorizzandola in una variabile di sessione. Se dovessi farlo, qual è il metodo migliore per ottenere/estrarre l'ID utente corrente?

Edit:

Attualmente, ho copiato il file facebook.php e l'example.php file su da GitHub, e solo cambiato il nome dell'applicazione e segreta in example.php. Non sta memorizzando un cookie e sta dicendo "Non sei connesso". Tuttavia, quando I print_r($session); funziona (ma solo se l'url contiene i dati della sessione).

Qualcun altro ha riscontrato problemi di questo tipo? È possibile che l'esecuzione su localhost stia causando questo?

Edit:

ho caricato esattamente le stesse due file su un host e ha funzionato perfettamente. Ha memorizzato il cookie e mostrato tutte le informazioni necessarie. È molto probabile che l'esecuzione di localhost causi i problemi. Ho modificato le impostazioni nella scheda Connetti dell'applicazione di Facebook Developer ma non ho ancora avuto fortuna.

Qualcuno sa come farlo da localhost o cosa sto facendo male?

risposta

5

Ci sono dati chiamati "sessione" nell'URL. Questo deve essere memorizzato per ottenere continuamente l'ID utente?

Sì, deve essere memorizzato, ma la classe di Facebook lo analizza e lo memorizza in un cookie per te.


Inoltre, sarebbe più facile per appena tagliato la libreria PHP del tutto e solo gestire il reponse me stesso, riporlo in una variabile di sessione.

Il Facebook classe fornito in facebook.php non è necessario utilizzare l'API, ma fornisce alcuni servizi per voi, come mettere insieme gli URL comuni, l'analisi dei dati di sessione (che viene inviato all'URL e quindi memorizzato in un cookie), trasformando messaggi di errore (un oggetto JSON con una chiave "errore") in un'eccezione PHP, ecc.

Quindi, in breve, no, non sarebbe più semplice ritagliare la libreria PHP perché finiresti per scrivere praticamente le stesse cose.

Come si può vedere dall'esempio, che stanno ottenendo l'ID utente ($uid) chiamando getUser:

if ($session) { 
    try { 
    $uid = $facebook->getUser(); 
    $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    } 
} 

$ uid è solo un numero intero e $me sono i dati per l'utente corrente (che sembra che tu non abbia bisogno).Gli stessi dati potrebbero essere recuperati chiamando:

$me = $facebook->api('/' . $uid); //Generates https://graph.facebook.com/[uid] 

Il problema che ho in questo momento con l'esempio è che la funzione riccio all'interno della classe di Facebook (makeRequest metodo) è per qualche ragione il ritorno NO contenuti. Quindi, $me non ha più nulla, il che dice ancora l'esempio "Non sei connesso". Ma, se si dovesse produrre $uid, si vedrebbe che effettivamente contiene l'ID dell'utente corrente.

+0

vuol conservarlo in un cookie per sé o devo per in particolare eseguire una funzione per fare questo? Ho impostato cookie su true quando dichiaro la classe di facebook ma su come ispezionare i cookie in Firefox non sembra aver memorizzato nulla. – j82374823749

+0

@ briggins5 Sembra che lo faccia quando chiami 'getSession'. – Nicole

+0

Ho chiamato $facebook->getLoginUrl() e getSession ma ancora nessun cookie è memorizzato, a parte alcuni sotto la categoria di Facebook, ma questi non sembrano correlati in modo specifico, e probabilmente non lo sarebbero comunque. – j82374823749

0

Avete controllato l'ultima versione di facebook.php da github? L'ultima versione tiene conto delle virgolette e quindi restituirà una sessione invece di un nullo.

+0

Grazie Peter, sì, ho quella versione. Forse aggiorna comunque. Sembra che solo la chiamata CURL non restituisca nulla (affatto). – Nicole

0

Una cosa che aiuta a controllare le intestazioni di risposta da Facebook a volte (raramente) possono essere istruttive.

Ho riscontrato che è necessario effettuare una chiamata a/oauth/authorize (con parametri di query) per autorizzare il sito Web/l'applicazione, in modo che Facebook possa fornire un token di accesso.

+0

Sembra che ci sia un problema quando si utilizza localhost invece di un server accessibile pubblicamente. Per quanto ne so, la libreria PHP gestisce l'autorizzazione stessa poiché effettivamente produce l'ID utente, ma non riesce a produrre un cookie. – j82374823749

1

funzione setCookieFromSession privato ($ session = null)

sta fallendo perché il parametro $ dominio è vuoto Fai. Sto usando questo per il test locale:

if ($domain != '') { 
    setcookie($cookieName, $value, $expires, '/', '.' . $domain); 
} else { 
    setcookie($cookieName, $value, $expires, '/'); 
} 
+0

Grazie per la risposta. Questo ha risolto il problema di lavorare su localhost. – j82374823749

+0

quindi, quale dovrebbe essere il valore di $ dominio su quando si lavora su localhost? – BlueSilver

Problemi correlati