私は 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
gemがインストールされます。誰かが理由を知っていますか?さらにコードや情報が必要な場合はお知らせください。