【问题标题】:Facebook - Twitter authentication - information mergeFacebook - Twitter 认证 - 信息合并
【发布时间】:2012-05-11 18:20:11
【问题描述】:

我正在构建一个可以匿名使用的服务,但是用户可以在他的\她的 Facebook 和\或 Twitter 个人资料上分享内容。在授权应用程序后,我希望存储有关用户的基本信息并将其链接到他们正在共享的内容。

通常服务需要在使用前进行身份验证,这解决了这个问题,但在我的情况下,身份验证出现在最后阶段,它分为 4 条路径:

  1. [脸书+推特]
  2. [仅 Facebook]
  3. [仅推特]
  4. [无]

但是,执行上述操作会在数据库中创建冗余数据,即我会将 Facebook 信息和 Twitter 信息放在单独的表中,它们之间没有链接,也与帖子无关。

  • 防止这种情况的最佳方法是什么?解决方案是在数据建模级别上吗?还是在代码级别?还是两者兼有?

  • 以前做过吗?

我已经创建了一个如何合并帐户数据的流程图,但是这个过程可能会在数据库级别产生开销,因为它需要使用非常长的 FacebookID \ TwitterID 搜索条目。

  • 如果需要额外信息,请在评论中说明。

谢谢

【问题讨论】:

  • 在选项 1 中,用户会同时使用他的 Facebook 和 Twitter ID 登录吗?
  • 不,他们将分别进行身份验证,每个按钮一个。
  • 在这种情况下,请详细说明第一种情况(Facebook + Twitter)。

标签: facebook authentication mobile architecture twitter


【解决方案1】:

我处理这个问题的方法是将用户身份的概念与您的应用程序使用的身份验证的概念分开。例如,在数据模型级别,让 Users 表存储基本用户信息,并让 Authentications 表存储与特定身份验证提供程序关联的用户凭据/令牌。 在代码级别,如果您打算坚持使用第三方身份验证,我建议您考虑构建一个层,以保护您的应用程序不必直接与各种 OAuth 提供者打交道。

在 Ruby/Rails 世界中,这是通过管理用户身份的 Devise 的组合来实现的(它还允许内置用户名/密码身份验证,但听起来您对此并不感兴趣)和OmniAuth 提供针对多个提供商的身份验证。

此处提供了包含两者的示例应用程序:Devise + OmniAuth。 最后,关于主题的 RailsCast 在这里:OmniAuth Part 1

我知道您可能不在 Ruby/Rails 中工作,但这些材料可能会为您尝试实现的架构提供灵感。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2017-12-21
    相关资源
    最近更新 更多