/ / Rails: Obtenha o e-mail do usuário após o Facebook Oauth (usando Devise e facebook omniauth gem) - ruby-on-rails, facebook, legenda, omniauth

Rails: Obtenha o e-mail do usuário após o Facebook Oauth (usando Devise e facebook omniauth gem) - ruby-on-rails, facebook, legenda, omniauth

Estou tendo problemas para acessar o e-mail, first_name e last_name de um usuário após a inscrição no Facebook.

Aqui está o que meu Omniauth.rb se parece com:

Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV["FACEBOOK_APP_ID"], ENV["FACEBOOK_SECRET"],
:scope => "email",
:info_fields=>"first_name, last_name, email"
end

Quando a janela de login do Facebook aparece, mostrao escopo corretamente ("este aplicativo terá acesso ao seu e-mail"). Mas quando eu me intrometo na resposta, vejo que não estou recebendo nenhum dos meus campos solicitados de volta.

   {"provider"=>"facebook",
"uid"=>"10101161800900201",
"info"=>
{"name"=>"Jackson Cunningham",
"image"=>"http://graph.facebook.com/10101161800900201/picture"},
"credentials"=>
{"token"=>
"...",
"expires_at"=>1445243073,
"expires"=>true},
"extra"=>
{"raw_info"=>
{"name"=>"Jackson Cunningham", "id"=>"10101161800900201"}}}

Respostas:

4 para resposta № 1

Descobri isso. Você só precisa certificar-se de editar o Devise.rb além do Omniauth.rb

Devise.rb deve ter:

config.omniauth :facebook, "your_facebook_id", "your_facebook_secret", scope: "email,public_profile", info_fields: "email, first_name, last_name"

substituindo qualquer info_fields específico que você precisa (lista de todos os disponíveis Aqui)