可以设计+ Omniauth有几种类型的登录?

Chr*_*ini 6 ruby-on-rails devise omniauth

我已经将Devise用作其他项目的标准认证gem.在另一个项目中,我使用Devise + Omniauth进行Twitter身份验证.

在一个新项目中,我需要我的最终用户能够通过Twitter和Facebook登录,或者能够通过应用程序注册.将来用户可以将他的帐户链接在一起.例如,他的Twitter和Facebook帐户.或者,他的Twitter和"原生"帐户."原生"是他直接在网络应用中注册的帐户.

Devise能够做到这一点吗?如果是这样,我们如何将用户的帐户链接在一起?这背后的概念是什么?该应用程序如何知道哪个Facebook和Twitter帐户属于哪个用户?

欢迎提出意见和建议.

编辑:

我一直关注http://railscasts.com/episodes/236-omniauth-part-2?autoplay=true,我没有得到的是.如果

  1. 用户已退出应用,
  2. 用户拥有在app中注册的帐户,
  3. 用户使用其他服务提供商(facebook,twitter等)登录.

该应用程序如何知道如何将其新服务提供商与其现有帐户相关联?

Stackoverflow.com具有此功能.但是,他们未在其"多重签名"功能中包含的一个服务提供商是Twitter.我猜这是因为Twitter不会通过他们的API公开用户的电子邮件.而其他服务提供商(Facebook,雅虎,Gmail)的确如此.

小智 3

电子邮件通常用于链接所有帐户,但对于 Twitter,您无法获取电子邮件帐户。使用电子邮件并不是一个好的做法,因为用户不一定使用相同的电子邮件地址注册每个服务。

询问用户登录后是否要使用 facebook/twitter/google/openid 进行身份验证是最简单的方法,对于用户来说也更可预测。你必须防止“这个网站如何知道我的 Facebook 帐户?他们为什么跟踪我?”的效果。

附带说明一下,最困难的部分不是添加新的身份验证方法,而是合并帐户(例如,如果用户创建了一个 facebook 帐户和一个 twitter 帐户)。