2012-06-22 10 views
6

Io e i miei colleghi stiamo sviluppando un'applicazione (sia l'applicazione Web che l'app mobile (iPhone & android)), che include un processo di accesso. Attualmente disponiamo del nostro meccanismo di accesso (in cui gli utenti hanno firmato un account sulla nostra app e hanno memorizzato le informazioni nel nostro database). Stiamo cercando di integrare oAuth e consentire agli utenti di accedere con Facebook, Twitter, LinkedIn e Google.Qual è lo standard con oAuth per ricordare gli utenti?

Ora, quando gli utenti effettuano il login con uno di questi, come ho capito il processo di login si verifica al di fuori della nostra applicazione e fondamentalmente solo ottenere il permesso di accedere alle loro risorse.

La mia domanda è questa: attraverso oAuth, come ricordiamo gli utenti? ad esempio, gli utenti che effettuano l'accesso hanno privilegi di lettura/scrittura e preferenze. Come ricordiamo quelli che non registrano effettivamente tramite la nostra app. Possiamo memorizzare il loro indirizzo email nella nostra tabella "Utenti" ??

Quali sono le migliori pratiche in uno scenario del genere?

Grazie per qualsiasi informazione è possibile fornire.

risposta

11

Dopo aver creato database di autenticazione per alcuni diversi siti Web abilitati per OAuth, posso dire che ho imparato alcune cose che dovresti tenere a mente.

  1. È necessario disporre di una tabella di utenti per il proprio sito che sia completamente indipendente dal provider OAuth utilizzato per l'iscrizione/l'accesso. Ciò consente agli utenti del sito di combinare più account insieme con la loro identità principale sul tuo sito. (Ad esempio, associa Facebook e Twitter con te.)
  2. Quando fai l'iscrizione a un utente, devi ottenere un indirizzo email da loro. Se chiedi a Facebook per questo, o se devi chiedere direttamente. In questo modo è possibile "aggiornare" gli utenti in un momento successivo, in base alla sola dipendenza da terzi di OAuth, impostando la propria password sul proprio sito. (Basta semplicemente inviare loro un link alla pagina di reimpostazione della password per farli iniziare a creare la loro prima password.)
  3. Non si desidera utilizzare l'indirizzo di posta elettronica come chiave primaria. Non sono sicuro che sia quello che stai descrivendo o meno, ma vuoi davvero che abbiano un ID utente locale che usi per mantenere la loro sessione, ecc. Quindi associ il loro ID di Facebook o il loro ID di Twitter con quello locale ID, e utilizzare la corrispondenza tra tali identificatori per abbinare a quale degli utenti del tuo sito prendere in considerazione l'accesso.
+2

grazie per il feedback !! Alcune domande: - Riguardo al punto 1, è inteso per i casi in cui gli utenti accedono con account OAuth diversi (Facebook, Twitter, ...), ma sono ancora collegati e considerati come UN UNICO account? - Per quanto riguarda il punto 2, cosa intendi per upgrade? Potete per favore chiarire questo caso d'uso. - Per quanto riguarda il punto n. 3, "ID utente locale" generato dal sistema/database o è specificato dall'utente finale? – mustang888

+0

Inoltre, come gestiresti il ​​seguente caso d'uso: L'utente X accede tramite Facebook. Conservo il suo ID di Facebook e lo collego a un ID utente locale. La volta successiva, Utente X accede tramite Twitter. Come faccio a determinare che si tratta della stessa persona (che ha effettuato l'accesso in precedenza tramite Facebook) in modo da poter recuperare le sue preferenze utente. È basato sull'indirizzo e-mail (che potrebbe essere comune tra i suoi account Facebook e Twitter o potrebbe non essere)?? Grazie per l'aiuto! – mustang888

+0

Come funzionerebbe con Twitter dal momento che non forniscono l'e-mail? Come è possibile sapere se l'utente di Twitter è uguale a quello di Facebook senza un'identità unica come l'email? – CMCDragonkai