am-*_*ils 2 authentication validation ruby-on-rails omniauth ruby-on-rails-3
我允许在我的Rails网站上进行Facebook身份验证,并使用Omniauth.我最近在生产中收到以下错误:
ActiveRecord :: RecordInvalid:验证失败:电子邮件不能为空,电子邮件无效
通常Facebook注册工作正常,那么什么会导致这个特定的错误?下面是我用Omniauth创建用户的代码.
def self.create_from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.email = auth[:info][:email]
user.password = SecureRandom.urlsafe_base64(n=10)
user.save!
end
end
Run Code Online (Sandbox Code Playgroud)
实际上,omniauth-facebook repo中有很多关于这个问题的讨论.
一些用户提供了一个电话号码,Facebook使用它作为主要的身份验证方法而不是电子邮件地址.我相信电话号码然后被加密,这将成为电子邮件地址通常的内容.
解决此问题的唯一方法是将用户重定向到完成注册过程的表单.查看有关如何执行此操作的Railscasts OmniAuth第2部分.
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |