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

Sti*_*ste 11 php oauth-2.0 twitter-oauth facebook-oauth facebook-login

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

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

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

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

提前致谢!

Stijn Hoste

Dmi*_*Net 6

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

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

表格结构和测试数据

表用户

user_id   | email
________________
1         | mail@site.com
2         | 323232321@vk.com - if the social cannot return an email address
Run Code Online (Sandbox Code Playgroud)

表user_socials

social_id | user_id | social
____________________________
123213213 | 1       | facebook
332123213 | 1       | twitter
323232321 | 2       | vk
Run Code Online (Sandbox Code Playgroud)

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

Ps Facebook,Twitter,Google + - 返回用户电子邮件

  • 根据我的经验,"发明"一个伪电子邮件地址只是为了创建一个有效的用户记录,这通常表明该模型存在问题,并且几乎肯定会在以后引起悲伤.将真实数据与假数据混合会导致很多问题.如果允许某人创建没有电子邮件地址的帐户,您应该以这种方式设计模型; 这意味着电子邮件地址不能成为您识别的主要手段.从我的角度来看,`323232321 @ vk.com`是一个非常误导的"null"替补.只是我的两分钱. (4认同)