/ / Rails: Benutzer-E-Mail nach Facebook Oauth (mit Devise & facebook omniauth gem) - Ruby-on-Rails, Facebook, Devise, Omniauth

Rails: Benutzer-E-Mail nach Facebook Oauth (mit Devise & facebook omniauth gem) - Ruby-on-Rails, Facebook, Devise, Omniauth

Ich habe Probleme beim Zugriff auf die E-Mail-Adresse, den Vornamen und den Nachnamen eines Benutzers, nachdem sie sich von Facebook aus angemeldet haben.

So sieht mein Omniauth.rb aus:

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

Wenn das Facebook-Login-Fenster erscheint, wird es angezeigtder Umfang richtig ("Diese App wird Zugriff auf Ihre E-Mail haben"). Aber wenn ich auf die Antwort schaue, sehe ich, dass ich keines meiner angeforderten Felder zurückbekomme.

   {"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"}}}

Antworten:

4 für die Antwort № 1

Herausgefunden. Sie müssen nur sicherstellen, dass Devise.rb zusätzlich zu Omniauth.rb bearbeitet wird

Devise.rb sollte haben:

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

Ersetzen Sie alle spezifischen info_fields, die Sie benötigen (Liste aller verfügbaren Hier)