Obiettivo: Consentire a un utente di eseguire l'autenticazione con Facebook in un'applicazione iOS che richiede l'accesso a un servizio Web protetto che sto utilizzando.Progettazione per l'autenticazione Facebook in un'app iOS che accede anche a un servizio Web protetto
Ipotesi: c'è un'autenticazione nativa (e la registrazione) sistema in vigore per quegli utenti che scelgono di non usare Facebook per il segno in
Dettagli:.
- Assumiamo voglio offrire l'opzione per un utente di accedere con Facebook senza creare un account/credenziali separati per il nostro sistema.
- Poiché supportiamo il nostro meccanismo di autenticazione nativo (nome utente e password) abbiamo i nostri ID utente e emettiamo un token di autenticazione che viene utilizzato per le successive interazioni dopo la convalida iniziale delle credenziali.
Sono sorpreso che Facebook non abbia le migliori pratiche per questo nella loro documentazione per sviluppatori. Tutta la documentazione esistente presuppone che si stia realizzando l'autenticazione FB in un sito Web o un'app mobile autonoma senza servizi che richiedono l'autenticazione.
Ecco le mie prime riflessioni su come questo sarebbe stato progettato ma voglio verificare se è corretto.
- client apre la Facebook iOS Accesso segni
- UI utente con le credenziali di Facebook e ottiene token di accesso
- iOS App passa token di accesso al nostro server
I nostri colloqui di server a FB grafico API che utilizzano l'accesso token a (a) convalidare il token e (b) ottenere l'ID utente FB per quel token di accesso.
ad es. Il nostro server chiamerebbe https://graph.facebook.com/me/?access_token=XYZ che restituirebbe informazioni sul profilo in un oggetto JSON
Supponendo che sia valido, il nostro server estrae l'ID utente dall'oggetto JSON e controlla se l'utente ha già un account. In tal caso, rilasciamo il nostro ticket di autenticazione al client da utilizzare per quella sessione. Se l'utente non ha un account, ne creiamo uno nuovo con l'ID utente di Facebook, assegna il nostro ID utente univoco e rilascia il nostro ticket di autenticazione.
- Il client passa quindi il ticket di autenticazione alle interazioni successive che richiedono l'autenticazione.
Questo mi sembra il giusto approccio, ma non sono sicuro che manchi qualcosa di follemente di base e che scenda il percorso (complicato) sbagliato.
Come è stato risolto? Sto anche passando il token di accesso e facendo ruotare l'utente sul server. Sembra accademico, ma sto chiedendo. –
Questa è stata la mia implementazione utilizzando rails e ideato: http://stackoverflow.com/questions/7232490/how-to-use-http-authentication-in-devise-with-an-optional-omniauth-token-as- the – Matt
Perché non passare l'intero auth_hash invece di dover effettuare due chiamate all'API FB (una dal dispositivo iOS e una dal server)? – bsiddiqui