我正在使用omniauth 让用户在Ruby on Rails 应用程序中使用Facebook 和Twitter 帐户登录。由于 Twitterrequest.env["omniauth.auth"]
不提供帐户的电子邮件,因此我构建了它(电子邮件在数据库中不能为 NULL)。我有这段代码:
if params[:provider] == 'facebook'
email = omniauth[:info]["email"]
elsif params[:provider] == 'twitter'
email = omniauth[:info]["name"] + '@example.com'
end
user = User.new(:email => email)
如果我使用 Facebook 帐户登录,它就可以完美运行。但是,如果我尝试使用 Twitter 帐户,应用程序会给我这个错误:
SQLite3::ConstraintException: users.email may not be NULL [SQL query]
我多次检查电子邮件是否为 NULL,以防它构造错误或其他原因,但不是 NULL。omniauth-twitter
并omniauth-facebook
安装了宝石。有谁知道为什么?如果您需要更多代码或信息,请告诉我。