Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为OpenAuth(社交登录)创建数据库架构的最佳实践_Php_Facebook_Laravel 4_Oauth_Google Login - Fatal编程技术网

Php 为OpenAuth(社交登录)创建数据库架构的最佳实践

Php 为OpenAuth(社交登录)创建数据库架构的最佳实践,php,facebook,laravel-4,oauth,google-login,Php,Facebook,Laravel 4,Oauth,Google Login,我已经为用户管理以及角色和权限做了一个数据库模式。问题实际上是从我决定集成多个“开放身份”时开始的,比如Facebook登录、Google登录等等 我的数据库表DB.USERS目前看起来如下所示: id oauth_id username email password remember_token ...firstname,lastname,etc... 目前的问题是,每当用户试图通过OAuth之一(Google、Facebook)登录,并且已经收到了一封电子邮件(由OAuth之一或应用程序的

我已经为用户管理以及角色和权限做了一个数据库模式。问题实际上是从我决定集成多个“开放身份”时开始的,比如Facebook登录、Google登录等等

我的数据库表DB.USERS目前看起来如下所示:

id
oauth_id
username
email
password
remember_token
...firstname,lastname,etc...
目前的问题是,每当用户试图通过OAuth之一(Google、Facebook)登录,并且已经收到了一封电子邮件(由OAuth之一或应用程序的auth库接收),就会触发一个错误,无法继续

我想知道为这种方法创建数据库模式的最佳方法是什么?有没有人已经有过这方面的经验


我使用的是Laravel4.2,不同的社交登录源报告相同的电子邮件地址是完全正常的情况。首先,你需要回答一个问题——在这种情况下你想做什么

如果您信任社交登录报告有效的电子邮件地址,您可以简单地将新登录源合并到现有帐户中

您还可以选择为每个单独的登录源创建单独的帐户-在这种情况下,您应该将电子邮件视为一个名称-而不要求它是唯一的。如果您希望自己允许电子邮件+密码登录,则这是有问题的

需要考虑的另一个问题:

  • 如果社交登录报告的电子邮件地址更改了现有帐户,会发生什么情况?如果新电子邮件与另一个现有帐户匹配怎么办
  • 您是否允许用户主动更改电子邮件

首先设计流程,然后使用合适的DB模式。

感谢您澄清了一些关键要素,以实现我的期望