6

我和我的同事开发了一个应用程序(Web 应用程序和移动应用程序(iPhone 和 android)),其中包括一个登录过程。目前,我们有自己的登录机制(用户在我们的应用程序上注册了一个帐户,并将他们的信息存储在我们的数据库中)。我们正在研究集成 oAuth 并允许用户使用 Facebook、Twitter、LinkedIn 和 Google 登录。

现在,当用户使用其中任何一个登录时,据我所知,登录过程发生在我们的应用程序之外,基本上只获得访问其资源的权限。

我的问题是:通过 oAuth,我们如何记住用户?即,登录的用户具有读/写权限并具有偏好。当他们实际上没有通过我们的应用程序注册时,我们如何记住他们。我们可以将他们的电子邮件地址存储在我们的“用户”表中吗?

在这种情况下,最佳实践是什么?

感谢您提供的任何信息。

4

1 回答 1

11

在为几个不同的启用 OAuth 的网站构建了身份验证数据库之后,我可以说我学到了一些你应该记住的东西。

  1. 您的站点应该有一个用户表,该表完全独立于他们用于注册/登录的 OAuth 提供商。这使您的站点用户能够在您的站点上以他们的主要身份将多个帐户组合在一起。(例如,将 Facebook 和 Twitter 与您关联。)
  2. 当您让用户注册时,您应该从他们那里获得一个电子邮件地址。无论您是向 Facebook 询问,还是必须直接询问。这使您以后可以“升级”用户,从纯粹依赖第三方 OAuth 到在您的站点上设置自己的密码。(您只需向他们发送一个指向您的密码重置页面的链接,以便他们开始创建他们的第一个密码。)
  3. 您不想使用电子邮件地址作为主键。我不确定这是否是您实际描述的内容,但您确实希望他们拥有一个本地用户 ID,用于维护他们的会话等。然后,您将他们的 Facebook ID 或他们的 Twitter ID 与该本地相关联ID,并使用此类标识符之间的对应关系来匹配您网站的哪些用户考虑已登录。
于 2012-06-22T22:55:37.337 回答