2014-05-08 16 views
9

Ho un'app mobile che funziona con il server di back-end, vorrei capire quali sono le migliori pratiche per usando Facebook per accedere (creare un account) e quindi per mantenere l'intero sistema sincronizzato.Qual è il modo giusto per accedere a Facebook per l'applicazione mobile (con server node.js/passport.js)

Ecco quello che ho capito finora: - app per dispositivi mobili può fare il login sul dispositivo e ottenere l'access_token - token di accesso può essere trasferito al server. Ho fatto un proof of concept usando il token passport-facebook collegato ad alcuni api.myhost.com/auth/facebook route, e sembra di poter autenticare l'utente e recuperare i suoi dati FB. Quindi posso abbinarlo a un utente esistente nel mio database o creare un nuovo record.

Cosa non capisco: 1) Devo utilizzare https per trasferire il token FB sul mio server?

2) Cosa devo fare per le altre richieste che devono essere autenticate. Non penso che andare su FB per ogni richiesta sia un'opzione. Un'opzione che viene in mente è quella di generare un altro token di accesso (il mio) e restituirlo come risultato dell'autenticazione FB.

Il modo più semplice per farlo è utilizzare le sessioni di token passaporto-facebook (in modo che l'ID sessione cookie possa essere serializzato e de-serializzato nell'ID utente). Ma questo significa che ho bisogno di mantenere un po 'di spazio di archiviazione KV per le sessioni.

Un altro modo sarebbe generare il mio token casuale per quell'utente, restituirlo insieme all'ID utente all'accesso riuscito, memorizzarlo nel record utente e fare in modo che ciascuna chiamata API del client fornisca questa coppia id/token e riconvalidarla ogni volta manualmente senza fare affidamento sul passaporto. O forse forse basandoti sulla strategia locale del passaporto?

Quale è il migliore? Quali sono i pro/contro di ciascuno?

2) Se si prevede di utilizzare il token FB per la pubblicazione su FB e l'analisi del grafico (amici, ecc.), I sto pianificando di memorizzare il token sul server. Quanto spesso devo aggiornarlo? Ogni volta che l'app avvia e aggiorna un token sul client dovrei autenticarmi nuovamente con il mio server usando un nuovo token FB? Che ne pensi di aggiornare i token FB utente dalle chiamate server-to-server? Dovrei mai farlo se voglio mantenere l'accesso ai dati FB dell'utente, ma l'utente ha smesso di usarlo o lo usa troppo di rado?

Esiste da qualche parte un libro di cucina di uno schema di lavoro che funzioni bene?

Grazie!

+0

Hai mai trovato qualcosa di utile qui? – SJoshi

risposta

0

Facebook Security Token

Il token che hai creato sul client mobile app è per il vostro app Facebook che avete dato l'ID per l'autenticazione in. Userei sempre HTTPS per comunicare i token su Internet o qualsiasi altra informazione volatile.

Facebook gettone in scadenza & rinfrescante

Quando si esegue l'autenticazione nella tua app mobile ti capiterà spesso di ottenere il tempo di scadenza del token nel risposta con il token. La scadenza del token è spiegata nello Facebook API.

Le app mobili native che utilizzano gli SDK di Facebook riceveranno token di accesso di lunga durata, validi per circa 60 giorni.Questi token verranno aggiornati una volta al giorno quando la persona che utilizza la tua app invia una richiesta ai server di Facebook. Se non viene effettuata alcuna richiesta, il token scadrà dopo circa 60 giorni e la persona dovrà passare nuovamente attraverso il flusso di accesso per ottenere un nuovo token.

Chi rinfrescante il token:

Anche il token di accesso longeva finirà per scadere. In qualsiasi momento, puoi generare un nuovo token di lunga durata rimandando la persona al flusso di accesso utilizzato dalla tua app Web. Tieni presente che la persona non avrà effettivamente bisogno di accedere nuovamente, ha già autorizzato la tua app, quindi immediatamente reindirizzare alla tua app dal flusso di login con un token aggiornato: il modo in cui questo appare alla persona varierà in base al tipo di flusso di accesso che stai utilizzando, ad esempio se stai usando l'SDK JavaScript, questo avverrà in sullo sfondo, se si utilizza un flusso sul lato server, il browser reindirizzerà rapidamente alla finestra di dialogo di accesso e quindi automaticamente e immediatamente di nuovo alla propria app.

Problemi correlati