【问题标题】:How to design a User Account and User's social account database for an application如何为应用程序设计用户帐户和用户的社交帐户数据库
【发布时间】: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


【解决方案1】:

嗯,使用 mongo 背后的商业决策是什么?

我为什么要问?当有人决定改用 mongo 时 - 使用它提供的优势将是完美的。

所以我的建议是将这些细节嵌入到一个集合中:

user:{
       /* base fields */
       _id, firstName, lastName, nickName, userName, email.... etc
      socialAccount:[
                 {
                    type:"facebook/twiter/whtsEver"
                    name, /*and all  other stuff you need here*/
                     }]
}

那么应用需要的是让 ONE 调用 mongo 并立即获取 ALL 数据。不需要加入

【讨论】:

  • 感谢您的回复。此处的场景:如果用户决定仅使用 facebook 凭据登录,我可以获得基本信息,例如名字、姓氏和电子邮件。但是将其链接到用户集合不会有问题吗?因为用户集合是在用户注册应用程序时使用的,其中包括必填的密码字段。
  • 或者密码字段不是必需的。我考虑拥有 2 个集合的原因是,如果用户决定使用社交帐户登录,它应该在一个集合中,如果他决定使用应用程序注册,它应该在另一个集合中。我正在考虑将用户 objectId 嵌入社交帐户集合中。该方法显然是比较电子邮件,因为我假设用户的社交帐户电子邮件与注册应用程序相同。但如果电子邮件不一样,那么我无法链接,否则我的假设将是错误的。
  • @user3497437 当用户通过 facebook 注册时 - 然后我们将获得 facebook 身份验证信息,当决定使用用户名/密码时,我们可以将相关数据添加到文档中 - 对于这种情况,我们可以添加字段登录/注册键入以确定
  • 数据库模型中不需要密码 - 所有逻辑都应该转移到应用程序,因为在这个级别上,您将知道如何为特定用户提供访问权限
  • 所以基本上你所说的是将社交帐户嵌入到用户集合中,就像上面提供的示例一样。还有社交帐户数组中定义的名称是什么
猜你喜欢
  • 2019-04-17
  • 1970-01-01
  • 2016-03-18
  • 2020-01-18
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2015-09-29
相关资源
最近更新 更多