2015-10-10 3 views
2

В моей omniauth.rbOmniAuth-facebook не возвращает набор рамки

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, Rails.application.secrets[:facebook_app_id], Rails.application.secrets[:facebook_secret], :scope => 'email,public_profile', :display => 'popup', :info_fields => 'email,public_profile' 
end 

стороне клиента, JavaScript:

return FB.login(function(response) { 
    if (response.authResponse) { 
    return window.location = '/auth/facebook/callback; 
    } 
}, {scope: 'email,public_profile'}); 

в соответствии с API Docs FB.

Когда всплывающее окно FB открывается для запроса разрешений, оно правильно запрашивает электронную почту и public_profile. Я ударил ОК, и это то, что request.env['omniauth.auth] дает мне только:

{ "поставщик": "Facebook", "UID": "XXXXXXX", "информация": { "имя": "XXXXXXX XXXXXXX" , "image": "http://graph.facebook.com/XXXXXXX/picture"}, "credentials": {"token": "XXXXXXX", "expires_at": 1444467600, "expires": true}, "extra": {"raw_info": {"name": «XXXXXXX XXXXXXX », «идентификатор»: «XXXXXXX»}}}

Я не вижу ни адреса электронной почты, ни какой-либо общественной информации, кроме полного наименования и изображения профиля.

У меня нет ни малейшего представления о том, что я делаю неправильно, так как я точно следую указаниям омняута-facebook gem здесь: https://github.com/mkdynamic/omniauth-facebook, а также документы разработчиков FB.

Любые подсказки?

ответ

1

Вы на правильном пути, просто нужно обновить информационные поля с полями, которые вы хотите, чтобы вытащить из Facebook, public_profile не будет работать

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, Rails.application.secrets[:facebook_app_id], Rails.application.secrets[:facebook_secret], :scope => 'email', :display => 'popup', :info_fields => 'email,first_name,last_name' 
end 
Смежные вопросы