1

我已经使用 Devise 和 OAuth 将社交登录(Facebook、Twitter 等)与 Rails 应用程序集成。请求和回调都运行良好,用户能够有效地验证应用程序并登录。

我的问题是这样的:

使用 Devise,我的网站将用户的电子邮件地址作为用户名。因此,每当用户第一次通过社交网站登录时,都会为他们的帐户存储“连接”记录,以显示他们登录过哪些社交网站。如果他们在我的站点上还没有帐户,则使用回调数组中的电子邮件地址创建一个帐户。然后将连接与返回的令牌和机密一起存储以供以后使用(FB 帖子、推文等)。

不幸的是,Twitter 不提供电子邮件地址。为了避免这种情况,我要求首次使用 Twitter 登录的用户只需提供一个电子邮件地址,以便创建一个帐户。但是,如果他们已经在我的网站上有一个帐户,我不知道该怎么办。我无法检查他们是否已经这样做了,因为我没有得到匹配的电子邮件地址。这最终可能导致用户拥有多个帐户。

所以,我有点不知所措,如果有人有任何建议,那将非常有帮助。谢谢!:)

4

1 回答 1

0

您还需要将一些 oauth 提供者信息(例如 {provider, twitter identifier})存储到您的数据库中,然后根据该信息而不是电子邮件 ID 检查 twitter oauth。

如果登录是通过 twitter,最简单的方法是添加一个稍微不同的流程。向首次登录 Twitter 的用户询问电子邮件 ID。在您的用户表中,添加一个名为 tw_id 的列并添加用户 Twitter 标识符。下一次,如果通过 Twitter 登录,您检查 tw_id 而不是提供商电子邮件并继续正常的应用程序流程。

于 2013-06-09T07:48:32.923 回答