我有几个Rails应用程序,我期待与OmniAuth集成,但是存在一个概念性问题,我希望先弄清楚它。考虑以下情形:OmniAuth:针对同一用户的多个帐户进行防护
- 您的应用程序Foo支持通过Twitter和Facebook进行OmniAuth登录。
- Joe来到您的网站并通过他的Twitter帐户登录。这会在Foo上创建一个新用户,并将其与此新Twitter授权关联。
- 乔从Foo注销,并忘记了六个月的网站。
- Joe回到Foo,不记得他之前用Twitter登录过。
- Joe通过Facebook登录。由于他尚未通过其原始的Twitter授权登录,因此无法检测到他实际上是同一个Joe,并且创建了一个新帐户。
- Joe发现了他的旧帐户,现在感到沮丧的是,他的旧内容与此旧帐户绑定,并且他无法通过Twitter和Facebook交替登录。
由于Twitter不会为Foo提供电子邮件地址,因此没有用于检测两个Joes是否相同的Joe的通用标识符。您可以决定仅支持向您提供用户电子邮件地址的提供商,但如果用户在不同的提供商处注册了不同的电子邮件地址,则这不起作用。
我能想到的唯一的其他解决方案是给用户合并两个现有帐户的方式。与使用OmniAuth时相对容易的一切相比,这是一个非常头疼的问题。如果这是唯一的解决方案,是否有人会遇到一个指导/教程,展示如何做到这一点?我很惊讶这个问题没有得到更多的关注,因为OmniAuth的流行。
谢谢!
我没有看到一个完美的解决了这个问题。所以,我决定现在与单一供应商一起,直到我找到一个坚实的解决方案。 – hnprashanth 2011-03-28 07:30:02
你好Jimmy Cuadra,你可以看看try.discourse.org。话语已经使用omniauth实现了多种注册选项。它的源代码在GitHub上可用。 – 2013-05-04 21:18:46