PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-具有多个社交登录/注册数据库结构的统一用户帐户大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在创建一个网站,用户可以在其中通过facebook,twitter,linkedin,google plus和常规表单过程进行登录/注册.

到目前为止,我的数据库结构是

**users_table** 
id - username - password_hash - email - auth_key -date_created - last_login 

**user_profile**
id - user_id (foreign_key) - first_name - last_name - gender - phone - photo

**facebook_users**
id - facebook_id - profile_link - user_id (foreign_key)

**linkedin_users**
id - linkedin_id - profile_link - user_id (foreign_key)

**have_social_account**
facebook(tinyint)[0-1] - twitter(tinyint)[0-1] - linkedin(tinyint)[0-1] - google(tinyint)[0-1]

现在,例如,当用户使用他的facebook登录时,正在使用附加信息在users表和user_profile上为他创建新记录,并且我将auth密钥和配置文件链接插入facebook_users(因为它是facebook登录),最后我插入了在have_social_account中的新记录,值在Facebook下为(1).

但是如果同一用户尝试使用其linkedin帐户登录;新记录将使用新的user_id创建,因此这就是为什么我无法统一该用户帐户的原因.如果电子邮件相同,我可以处理,但是如果用户为每个社交帐户使用不同的电子邮件地址,该怎么办.

有人可以为我提供最佳的结构吗?
提前致谢

解决方法:

如果用户在不同的身份验证提供程序中使用不同的电子邮件地址,我认为您将无能为力.您需要一些可以依靠的东西,以确保所有主要参与者都能为您提供独特性,并且IMHO电子邮件的质量与它差不多.

如此,我认为您不需要那么多表.您的users和user_profiles表很好,但除此之外,为什么不只有一个表来存储不同的提供者帐户呢?

provider_accounts
-----------------
    id
    user_id
    type (enum of 'Facebook', 'Linked In')
    profile_link

使用这种结构,您可以轻松获取单个用户的所有提供商帐户,并确定给定的电子邮件是否已经具有给定提供商类型的特定帐户.

如果用户提出要求,或者以其他方式确定两个帐户实际上是同一用户,则可以通过使用某种实用程序来“合并”两个帐户来缓解这种情况.

大佬总结

以上是大佬教程为你收集整理的php-具有多个社交登录/注册数据库结构的统一用户帐户全部内容,希望文章能够帮你解决php-具有多个社交登录/注册数据库结构的统一用户帐户所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: