【发布时间】:2011-01-10 06:58:50
【问题描述】:
我有几个 Rails 应用程序希望与 OmniAuth 集成,但我想先解决一个概念问题。考虑以下场景:
- 您的应用程序 Foo 支持通过 Twitter 和 Facebook 进行 OmniAuth 登录。
- Joe 访问您的站点并通过他的 Twitter 帐户登录。这会在 Foo 上创建一个新用户并将其与这个新的 Twitter 授权相关联。
- Joe 退出了 Foo,并在六个月内忘记了该网站。
- Joe 回到 Foo,不记得他以前使用 Twitter 登录过。
- Joe 使用 Facebook 登录。由于他尚未通过原始 Twitter 授权登录,因此无法检测到他实际上是同一个 Joe,因此会创建一个新帐户。
- Joe 发现了他的旧帐户,现在他很沮丧,因为他的旧内容与这个旧帐户绑定在一起,而且他无法交替使用 Twitter 和 Facebook 登录。
由于 Twitter 不向 Foo 提供电子邮件地址,因此没有通用标识符可用于检测这两个 Joe 是同一个 Joe。您可以决定仅支持向您提供用户电子邮件地址的提供商,但如果用户在不同提供商的不同电子邮件地址上注册,这将无济于事。
我能想到的唯一其他解决方案是为用户提供一些合并两个现有帐户的方法。与使用 OmniAuth 时其他一切相对容易相比,这是一个令人头疼的问题。如果这是唯一的解决方案,是否有人遇到过指南/教程,显示了如何完成此操作的示例?鉴于 OmniAuth 的流行,我很惊讶这个问题没有得到更多关注。
谢谢!
【问题讨论】:
-
我看不到这个问题的完美解决方案。所以,我决定暂时选择单一供应商,直到找到可靠的解决方案。
-
嗨 Jimmy Cuadra,您可以访问 try.discourse.org。 Discourse 使用omniauth 实现了多个注册选项。它的源代码在 GitHub 上可用。