我已经设法在我的PHP Web应用程序中使用Facebook系统编程登录。但现在我有点陷入最佳实践。
我是否必须将用户的userID保存到我的数据库,用户的电子邮件地址和/或姓名? 我问的是因为我正在考虑用户改变他们的电子邮件地址,如果是这样的话,他们下次无法登录。
我怎么知道当用户使用Facebook登录时,以及下次使用Twitter时,它是同一个用户?可能基于他的电子邮件地址?但我想如果您没有更改它,您的标准Facebook电子邮件是your.name@facebook.com,对吗?
我不是在这里要求代码,请提供一些经验或最佳实践。
提前致谢!
Stijn Hoste
答案 0 :(得分: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
表user_socials
social_id | user_id | social
____________________________
123213213 | 1 | facebook
332123213 | 1 | twitter
323232321 | 2 | vk
这种模式很好,因为一个用户可以使用他的帐户连接许多社交
P.S。 Facebook,Twitter,Google + - 返回用户电子邮件