2012-03-01 12 views
7

Vorrei un sito Web (Rails 3.1 con Devise e Omniauth) e un'applicazione mobile (iOS5) per condividere l'autenticazione. Con questo voglio dire che vorrei che un utente fosse in grado di accedere al sito con Facebook o SSI all'applicazione mobile e fare in modo che l'applicazione mobile parlasse con l'API del sito Web utilizzando le credenziali dell'utente per l'autenticazione del sito.Token di accesso Facebook condiviso tra il sito Web e l'applicazione mobile

Attualmente il lato web funziona bene con un utente che può accedere a un account. Ho anche l'applicazione mobile funzionante, che supporta l'utente SSI. Entrambi stanno usando la stessa applicazione di Facebook.

Il mio problema è trovare qualcosa di condiviso tra i due che posso utilizzare per l'applicazione Mobile per l'autenticazione sul sito. Ovviamente entrambi hanno accesso allo stesso ID utente, ma questo non sembra molto sicuro. La mia applicazione mobile ha un token di accesso, ma questo differisce dal token di accesso del sito, anche se sembrano simili, e il mio token di accesso mobile scade mentre il mio token di accesso al web non lo fa.

Web/Rails Token (non reale):

DDDAKnu1dg40BDHEWN0VDssxs8GGF8ZBEEOb38HnS0IUEQC1NSufmPCcGeFkTuw39ZDl7OhlZBD2jwJEqXdAZCtZBflJRQKZB4ZA

Mobile/iOS Token (non reale)

BDDAKnu1dg40BDEo3YjZD2hIwjfZB4slXJj3fmHfzLh5q1xZD0ShfJCb6PMjnApkpM0FTuGGvWnzZBQy4GZCMuysEEqhMz8YgruD53TXKTZC0GPFkfVe0b6fe8wieLLOZDDZA

012.351.641.061.

Utilizzando Facebook access token debugger ottengo il seguente (Tutto rimosso è identica tra i token):

per Web/Rails Token:

App ID: 
XXXXXXXXXXXXXXXX : SomeAppName 
User ID:  
XXXXXXXX : My Name 
Issued: 
1327507734 : 8:08 am Jan 25 2012 
Expires:  
Never 
Valid: True 
Origin: Web 
Scopes: email offline_access 

per mobile/iOS:

App ID: 
XXXXXXXXXXXXXXXX : SomeAppName 
Metadata: {"sso":"iphone-safari"} 
User ID:  
XXXXXXXX : My Name 
Issued: 
1327507734 : 8:08 am Jan 25 2012 
Expires:  
Never 
Valid: True 
Origin: Native Mobile 
Scopes: email offline_access 
+0

ciao. hai trovato una soluzione a questo problema? sto affrontando lo stesso problema in questo momento ... – alex

+1

Ciao. No, sfortunatamente no. Strano dato che sembrerebbe essere un requisito abbastanza comune. Ho passato molto tempo a cercare ma non ho trovato nulla di utile. Mi sono trasferito su qualcos'altro, ma dovevo risolvere questo molto presto. – Undistraction

+0

La mia applicazione non ha requisiti di sicurezza molto stringenti, ma, quello che facciamo è semplicemente controllare con Facebook per trovare l'ID utente associato a ciascun token di accesso per abbinare i conti – JeffS

risposta

1

Devi fare piccole modifiche nell'API di Facebook, in autorizzazione, cambiare da

[self authorizeWithFBAppAuth:YES safariAuth:YES]; 

Per

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 

Perché Somethimes c'è problema con gettone quando si desidera autenticarsi da fbApp o Safari. Ho avuto lo stesso problema, il token nei miei servizi web era diverso a causa di questo.

4

Solo per la cronologia, il modo in cui ho finito per gestirlo è passare il token mobile al server e fare in modo che il server verifichi l'autenticità del token. Una volta confermato, posso verificare l'autenticazione nei miei archivi usando uid e email.

+0

Ho la stessa domanda ora. Non ho capito la tua risposta - se il token non è lo stesso per accedere da app e web - come lo si convalida? diciamo uno registrato dall'app - come lo usi nelle chiamate web? – Dejell

0

Un metodo possibile per risolvere questo è per l'autenticazione via Facebook sul cellulare quindi inviare il un f_uid criptato verso l'applicazione rotaie che poi decifrare il f_uid e vedere chi è in realtà registrato in un server.

Problemi correlati