我正在为ios和android应用程序开发Web服务,需要开发一种使用社交媒体登录的服务。
该应用程序需要支持使用twitter、facebook、linkedin和googleplus登录。
作为参数,我接受来自社交网站的用户id和该id来源的网站,以及基本的用户信息,如名字、姓氏和电子邮件。
以下是本的相关表格结构
-
用户表
userid|email|deviceid|firstname|lastname|密码
userid是主要的,电子邮件是唯一的
-
用户社交媒体表
userid|site|token
当我从前端获得这些信息时,我首先检查社交用户id是否已经存在。如果社交id不匹配,我会检查数据库中是否存在电子邮件。如果数据库中没有电子邮件,那么我会注册新用户。
现在的主要问题是,如果用户是通过电话注册的,android和ios的twitter sdk不会返回电子邮件,甚至facebook也不会返回电子邮件。因此,我在唯一识别用户方面遇到了问题。我找了很多,但找不到任何解决方案。
如果我的方法有任何错误,请纠正我,并向我建议如何处理电子邮件问题。
我会为这两种类型的用户使用一个表,如下所示:
userid | type | email | socialid | deviceid | firstname | lastname | password | token
"类型"列将是可能帐户类型的枚举:fb、twitter,谷歌或电子邮件
对于来自社交网络的用户,"socialid"将具有社交网络的id(该id包含在oauth响应中),对于普通用户(通过电子邮件注册),将为null
"邮件"将包括普通用户的电子邮件,社交用户为空
然后,只需要SELECT查询就可以了解使用的用户类型
看看http://hybridauth.sourceforge.net/并实现以套件化您的体系结构或解决方案。
通常情况下,Facebook API应该随用户ID一起提供。Twitter SDK有点棘手。尝试将用户的Twitter用户名保存在数据库中。