Я создал новое приложение Rails и установил Devise и omniauth-facebook gem.omniauth-facebook cannnot получить адрес электронной почты
И установка моего приложения Facebook в качестве среды тестирования.
Итак, я вошел в систему через facebook и зарегистрировал свое новое приложение Rails, но request.env не содержал адрес электронной почты.
это возвращается request.env [ 'omniauth.auth']
{
"provider" => "facebook",
"uid" => "xxxxxxxxxxxx",
"info" => {
"name" => "xxxxxxx",
"image" => "http://graph.facebook.com/xxx/picture"
},
"credentials" => {
"token" => "tokenstring",
"expires_at" => xxxxxxxxx,
"expires" => true
},
"extra" => {
"raw_info" => {
"name" => "xxx xxxx",
"id" => "xxxxxxxxx"
}
}
}
это стеллажи request.env [ 'omniauth.auth'] [ 'Информация'] [ 'электронная почта']
Как я могу получить адрес электронной почты из facebook через oauth? Пожалуйста, помогите мне.
Rails версии 4.2.3 является рубин версия является 2.2.2p95
Это Gem версии
omniauth (1.2.2)
omniauth-facebook (2.0.1)
devise (3.5.1)
конфигурации/Инициализаторы/devise.rb
config.omniauth :facebook, 'appId', 'appSeacret', scope: 'email,public_profile'
приложение/контроллеры/omniauth_callbacks_controller.rb
def all_provider
user = User.from_omniauth(request.env['omniauth.auth'])
if user.persisted?
sign_in_and_redirect user
else
session['devise.user_attributes'] = user.attributes
redirect_to new_user_registration_url
end
end
alias_method :facebook, :all_provider
приложения/модель/user.rb
def from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
end
end
Добавить в 2015/7/11
я повторен тот же код с моим старым приложением тест facebook, и может получить полный public_profile и адрес электронной почты.
Существуют ли какие-либо ограничения для нового приложения facebook? кто-то знает?
для меня не работает, я не знаю, почему в моей конфигурации конфигурации есть config.omniauth: facebook, p.key, p.secret, scope: 'email', info_fields: 'email, name', но когда пытаетесь получить адрес электронной почты пользователя omniauth [: info] [: email], это пусто –
Такая же проблема существует для меня – Rubyist
Это не работает. – Red