ユーザーが自分のFacebookアカウントでサインインすることに同意すると、アプリのコールバックがFacebookから呼び出されます。これは、Facebookがユーザーのメールを取得しなかったことに気づきましたが、omniauthの構成では、次のような権限リストにメールをリストしました。これ:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, omniauth_app_id, omniauth_app_secret_id,
:scope => 'email,user_birthday,read_stream', :display => 'popup'
end
request.env['omniauth.auth']['extra']['raw_info']['email']
またはでメールを見つけることを期待していますがrequest.env['omniauth.auth']['info']['raw_info']['email']
、そこにはありません..実際、request
オブジェクト内のどの属性にもありません!
何か案が ?それは私のアプリのFacebook設定に関連していますか?
編集
Facebookからのコールバックの結果は次のとおりです。
puts auth.inspect
#<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=true expires_at=1353164400 token="***"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash first_name="***" id="***" last_name="***" link="***" locale="ar_AR" name="***" timezone=2 updated_time="2012-11-17T13:01:59+0000" username="***" verified=true>> info=#<OmniAuth::AuthHash::InfoHash first_name="***" image="***" last_name="***" name="***" nickname="***" urls=#<Hashie::Mash Facebook="***"> verified=true> provider="facebook" uid="***">
実際のデータを*に置き換えましたが、メールデータが欠落していることがわかります。
EDIT2
これがGemfilegem'devise'で使用されている私のgemです
gem 'omniauth'
gem 'omniauth-facebook', '1.4.0'
gem 'oauth2'