最佳实践使用 Facebook、Twitter、Google 登录或注册

Posted

技术标签:

【中文标题】最佳实践使用 Facebook、Twitter、Google 登录或注册【英文标题】:Best Practice Login With Facebook, Twitter, Google or register 【发布时间】:2014-06-11 18:41:19 【问题描述】:

我已经设法在我的 php Web 应用程序中使用 Facebook 系统编写登录程序。但现在我有点陷入最佳实践。

我是否必须将用户的用户 ID、用户的电子邮件地址和/或姓名和姓氏保存到我的数据库中? 我问这个是因为我正在考虑用户更改他们的电子邮件地址,如果这样,他们下次将无法登录。

我怎么知道当用户使用 Facebook 登录时,以及下次使用 Twitter 登录时,它是同一个用户?可能是基于他的电子邮件地址?但我认为,如果您没有更改它,您的标准 Facebook 电子邮件是 your.name@facebook.com,对吧?

我在这里不是要代码,请给我一些经验或最佳实践。

【问题讨论】:

保存到数据库中的内容取决于您需要什么样的数据,以及何时需要。不,要求email 许可会给你用户注册到 FB 的电子邮件地址(不是 username@facebook.com 地址)——但如果他们使用他们的手机。 感谢您的回复,我只需要登录信息。以及某种 ID 来存储链接到某个用户的数据。所以我想我会选择电子邮件字段,这是用户独有的。 好吧,正如我所说,您可能根本没有电子邮件地址——空字符串不是唯一的 :-) 也许可以考虑使用 OAuth,就像 *** 那样:然后用户将使用其他系统上的帐户登录,您不再需要担心处理身份验证过程。 从谷歌上找到这个帖子的人可能想看看github.com/thephpleague/oauth2-client/blob/master/… 【参考方案1】:

就我而言,最佳做法是使用oauth2 库(所有社交都支持它)并使用带有两个表的数据库:users 和 users_socials。

当用户尝试通过社交登录时,您的脚本将在表上创建记录并通过“一对多”关系连接这些表。所有社交都返回身份验证用户的唯一标识符,您的脚本可以将其插入存储以供进一步使用。

表结构和测试数据

表用户

user_id   | email
________________
1         | mail@site.com
2         | 323232321@vk.com - if the social cannot return an email address

表 user_socials

social_id | user_id | social
____________________________
123213213 | 1       | facebook
332123213 | 1       | twitter
323232321 | 2       | vk

这种模式很好,因为一个用户可以用他的帐户连接许多社交网络

附: Facebook、Twitter、Google+ - 返回用户电子邮件

【讨论】:

根据我的经验,“发明”一个伪电子邮件地址只是为了创建一个有效的用户记录通常表明该模型存在问题,并且几乎肯定会在以后引起悲伤。将真实数据与虚假数据混合会导致很多问题。如果允许某人创建没有电子邮件地址的帐户,您应该这样设计模型;这意味着电子邮件地址不能成为您的主要身份识别方式。在我看来,323232321@vk.comnull 的真正误导性替代品。只是我的两分钱。 @mindplay.dk 很棒的评论。我正在尝试围绕这个问题进行设计。您有什么建议或链接可以提供帮助吗?

以上是关于最佳实践使用 Facebook、Twitter、Google 登录或注册的主要内容,如果未能解决你的问题,请参考以下文章

操作栏:旧 Android 版本的最佳实践

无限滚动加载最佳实践

最佳实践:包括“使用 Twitter 登录”按钮 (Android)

访问令牌持久性最佳实践 (iOS)

将 facebook、twitter 和 Google+ 共享按钮放在 html 中的最佳方式? [关闭]

社交网络场景中的 Azure 通知中心最佳实践