使用电子邮件身份验证将使用 facebook 登录添加到现有登录

Adding login with facebook to existing login with email authentication

我遵循了 Rails 教程,所以我有一个有效的电子邮件身份验证系统,它不使用 Devise。我想我应该添加一个“使用 Facebook 登录”按钮,这样用户就可以选择使用电子邮件或 Facebook 登录。

有很多关于如何执行此操作的指南,我已成功遵循这些指南。我可以从 Facebook 取回身份验证。

我不确定如何处理它。我的用户模型有一个带有存在验证的 password_digest 字段。以前,所有用户都有密码。但如果用户注册 Facebook,则没有密码。现在我有两种用户。

做什么?我可以破解代码以解决密码不存在的可能性,但这似乎很草率。

尝试使用条件验证。请参见下面的示例:

validates :surname, presence: true, if: "name.nil?"

当您在 Facebook 注册用户时,您需要在后台生成一个随机密码并将其分配给用户对象。您可以使用 securerandom

生成随机密码
require 'securerandom'
password = SecureRandom.hex(10) #=> "fe87683d536a51705357"
user.password = user.password_confirmation = password
user.save

这个解决方案被很多网络应用程序使用,在后期如果用户想使用密码登录 s/he 可以使用重置密码 link 来生成相同的。

希望对您有所帮助!