2009-09-18 17 views
9

Ho lavorato su questo per un po 'di tempo e non riesco a farlo funzionare. Sembra essere una domanda frequente, ma raramente risposta a una domanda.Facebook Accesso offline chiave e login

voglio che gli utenti del mio sito per collegare il proprio account facebook con il mio sito web. Così possono vedere il loro stream e.t.c sul mio sito.

Al momento, ogni volta che si collegano nel mio sito che devono connettersi con facebook di nuovo. Desidero avere l'opzione per gli utenti di darmi offline_access ai loro dati, in modo che non debbano accedere nuovamente a facebook/riconnettersi al mio sito ogni volta che vengono sul mio sito. Come il suo tipo di punto del mio sito in generale.

Per fare questo ho capito ho bisogno di ottenere l'accesso offline. (https://developers.facebook.com/docs/authentication/) Sebbene dalla mia ricerca sembra essere un po 'di luce sulla documentazione (Facebook offline access step-by-step).

So già come chiedere l'accesso offline. Non sono sicuro di come ottenere i dati da esso.

Quindi le mie domande sono le seguenti;

  1. Come faccio ad avere la nuova chiave di sessione infinate dopo lo richiedo?
  2. Una volta ce l'ho e lo immagazzinano nel database - Come si crea un utente di Facebook con essa invece di passare attraverso la chiave di accesso limitato normale?

Solo per ulteriori informazioni. Sto utilizzando PHP (codeigniter) con di Eliot Haughin Facebook connect library Anche se mi potete dare il codice che utilizza la libreria php regolare mi limiterò a convertirlo

Grazie molto

risposta

6

Diritto. Dopo un po 'più di ricerca e spunta intorno al codice. L'avevo capito.

L'ho provato per più utenti e nel corso di una settimana e funziona come un fascino.

Dopo aver ottenuto l'autorizzazione offline_access, memorizzare la chiave di sessione e l'ID utente. (ovunque tu voglia, io metto il mio nel mio database).

La chiave di sessione infinita sarà simile a questa df4175330aaddb9d50fd8f84-30000799 con tutto ciò che dopo il 'trattino' essere l'ID degli utenti.

Allora la prossima volta che si chiama l'API aggiungere questa riga di codice nel

$ this-> FB-> set_user ('Facebook User ID', 'chiave accesso non in linea Session', 0).; N.B. lo zero è la quantità di tempo prima che scada. 0 = mai.

Il mio codice nella mia biblioteca è il seguente

$this->fb = new Facebook($this->_api_key, $this->_secret_key);  
//Query Database to see if user had enabled offline access. 
//If So extract the userid and session key 
$this->fb->set_user($fbuserid, $fbsess, 0); 

Nel mio test questo ha funzionato perfettamente. Ora i miei utenti possono accedere al mio sito e avere Facebook automaticamente, una volta che hanno dato il permesso offline_access. Attualmente sta lavorando per una settimana senza problemi.

Penso che sia tutto. Ma se ho lasciato qualcosa, fammi sapere.

+0

L'SDK PHP di Facebook non sembra avere un metodo 'set_user()' ora. Qualche idea su come funzionerebbe nel nuovo SDK? –

+0

Ciao amici, sembra essere cambiato. Inserisco una chiamata di esempio di seguito: \t \t $ data_api ['access_token'] \t = $ fb_access_token; \t \t $ data_api ['query'] \t \t \t = "SELECT pid FROM foto WHERE aid IN (SELEZIONA l'aiuto DA album WHERE owner = '$ fb_uid')"; \t \t $ data_api ['metodo'] \t \t = 'fql.query'; \t \t $ result = $ this-> facebook-> api ($ data_api); Questo funziona nel nuovo php api – Herr

1

ho lavorato con Facebook Connect dal l'hanno annunciato a F8 e messo in beta un anno fa, sono responsabile del backend della nostra integrazione di Facebook Connect su diversi siti di grandi dimensioni, e ho dedicato un po 'di tempo a questo problema in particolare.

Ecco il numero a good post on the topic, e qui il numero a bug filed 3 months ago.

Per farla breve, Facebook non supporta attivamente questo tipo di promozione di sessione - sì, è in the docs - ma non funziona. Chiaramente non è qualcosa che stanno effettivamente testando internamente.

E per esperienza, lascia che te lo dica: se non è una funzionalità ben documentata e comunemente usata, non puoi fare affidamento su Facebook per mantenerla.

+0

Quindi il vostro consiglio è di non disturbare/aspettare che sia fissato? O dovrei costruire il back-end supponendo che verrà risolto in qualche fase futura? –

+0

Supponiamo che non verrà risolto. Il bug è stato ignorato per mesi e molti dei bug che ho segnalato hanno impiegato un anno o più per risolverli, se mai sono stati corretti. –

0

Il codice scade ogni volta che un utente modifica la propria password. Questo è scritto sulla documentazione.

+1

Questo non è correlato alla mia domanda. –