【发布时间】:2016-06-08 06:36:29
【问题描述】:
我有一个应用程序,用户可以通过提供email, username and password 进行注册。
这将存储在 mongoDB 集合 Users_Table 中。现在,如果用户有这样的facebook, google account and twitter,该应用程序还允许用户使用他们的social media account 签名。
问题是我该如何设计数据库?
我最初的想法是有 2 个独立的集合。如果他或她在应用程序中注册,则第一个集合包含用户信息。
User_Table (
Id,
firstname,
lastname,
email,
phone_number)
第二个集合存储社交媒体帐户,如 facebook、google 或 twitter,如果用户有的话。
我将从他们的社交媒体帐户中检索用户的名字、姓氏、电子邮件和电话号码,并将其存储在集合中。这将存储在第二个集合中。
现在,如果已登录 facebook 的用户决定注册该应用程序,我如何合并两个帐户,即如果是同一用户,我如何链接它们?
【问题讨论】:
-
请注意,电话号码不能通过 API 获得(对于 Facebook),并且只有当用户在 Facebook 有一个电子邮件地址时,您才会获得一个电子邮件地址(不是这种情况对于很多使用手机注册的人。)您应该通过他们的应用范围用户 ID 来识别 FB 用户。
-
@CBroe 是的,谢谢,我知道了。
-
@CBroe 感谢您的回复。此处的场景:如果用户决定仅使用 facebook 凭据登录,我可以获得基本信息,例如名字、姓氏和电子邮件。但是将其链接到用户集合不会有问题吗?由于用户集合是在用户注册应用程序时使用的,其中包括必填的密码字段
-
@CBroe 或者不需要密码字段。我考虑拥有 2 个集合的原因是,如果用户决定使用社交帐户登录,它应该在一个集合中,如果他决定使用应用程序注册,它应该在另一个集合中。我正在考虑将用户 objectId 嵌入社交帐户集合中。该方法显然是比较电子邮件,因为我假设用户的社交帐户电子邮件与注册应用程序相同。但如果电子邮件不一样,那么我无法链接,否则我的假设将是错误的。
-
@CBroe 我的方法错了吗?
标签: facebook mongodb web-services google-account