0

Ich versuche Facebook Anmeldung/Anmeldung mit omniauth-facebook für Schienen zu ermöglichen. Ich erhalte erfolgreich den Vornamen, den Nachnamen und die E-Mail-Adresse eines Facebook-Nutzers. Das Abrufen des Bildes für die Erstellung eines Profilbilds war leider nicht erfolgreich. In config/devise.rb ich habe: (einige redactions gemacht)OmniAuth Facebook mit Devise nicht zurück Bild

config.omniauth :facebook, "XXappidXX", "XXsecretXX", callback_url: "http://XXXXXXXX/users/auth/facebook/callback", scope: "public_profile, email", permissions: "public_profile, email", image_size: :large, info_fields: 'email, first_name, last_name, picture' 

Meine Benutzerklasse:

class User < ActiveRecord::Base 
    def self.from_omniauth(auth) 
     where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 
     user.email = auth.info.email 
     user.first_name = auth.info.first_name 
     user.last_name = auth.info.last_name 
     user.photo = auth.info.image 
     user.password = Devise.friendly_token[0,20] 
     end 
    end 
    ... 

Die Insert-Anweisung Ich bin von localhost bekommen:

SQL (0.8ms) INSERT INTO "users" ("provider", "uid", "email", "first_name", "last_name", "photo", "encrypted_password", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["provider", "facebook"], ["uid", "XXXXXXXX"], ["email", "XXXXXX.com"], ["first_name", "Erik"], ["last_name", "VandeWater"], ["photo", nil], ["encrypted_password", "XXXXXXXXXX"], ["created_at", "2016-07-12 15:07:58.509187"], ["updated_at", "2016-07-12 15:07:58.509187"]] 

Hash Rückgabe von OmniAuth:

#<OmniAuth::AuthHash credentials=#<OmniAuth::AuthHash expires=true expires_at=1473523053 token="EAAYcrarZAlE8BAKuRypwRSBP2NFrFbzPXPGmJltZAfTmzJVAE68mh54f7r7srsD5uSCJZCzCSZAD7NTtRjC14qLxL95cjbSx0fuiX99999999GtzD0aGAyEE46koakFAnWazXZCYcm9QX74Og6vQQinAqZBLhrj75sK2pGLgZDZD"> extra=#<OmniAuth::AuthHash raw_info=#<OmniAuth::AuthHash email="[email protected]" first_name="Open" id="127279374371632" last_name="User" picture=#<OmniAuth::AuthHash data=#<OmniAuth::AuthHash is_silhouette=false url="https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/13614986_1999998038_6951825525819638697_n.jpg?oh=1c4e72a136a8c6d12f1bb8106593cf86&oe=582EC4BC">>>> info=#<OmniAuth::AuthHash::InfoHash email="[email protected]" first_name="Open" image="http://graph.facebook.com/127279374371632/picture?type=large" last_name="User"> provider="facebook" uid="127279374371632"> 

Wie kann ich ret Leite das Profilbild von Facebook und nutze es als Fotofeld für Nutzer?

Antwort

0

Verwenden Zeichenfolge anstelle des Symbols in der Optionen:

config.omniauth :facebook..., image_size: 'large', ... 
+0

Ich habe den Hash von OmniAuth zurückgegeben. Offensichtlich funktioniert das Bild, wird aber in der Benutzerklasse nicht richtig zugewiesen. –

+0

Wenn an einem Haltepunkt gestoppt wird, was befindet sich zu Beginn dieser Methode in Ihrem 'Auth'-Objekt? Was ist in 'auth.info.image'? –