最佳实践登录Facebook,Twitter,谷歌或注册


Best Practice Login With Facebook, Twitter, Google or register

我已经设法在我的PHP Web应用程序中用Facebook系统编程登录。但现在我有点拘泥于最佳实践。

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

我怎么能知道,当一个用户登录Facebook时,比如下次登录Twitter时,是同一个用户?可能是根据他的电子邮件地址?但我认为,如果你没有改变它,你的标准Facebook电子邮件就是your.name@facebook.com正确的

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

对我来说,最好的做法是使用oauth2库(它支持所有社交),并使用带有两个表的数据库:users和users_socials。

当用户试图通过社交登录时,您的脚本将在表上创建记录,并通过"一对多"关系连接这些表。所有socials都为auth用户返回唯一的标识符,您的脚本可以将其插入到存储中以供进一步使用。

表结构和测试数据

表用户

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

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

p.s.Facebook、Twitter、Google+-返回用户电子邮件