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?
Ich habe den Hash von OmniAuth zurückgegeben. Offensichtlich funktioniert das Bild, wird aber in der Benutzerklasse nicht richtig zugewiesen. –
Wenn an einem Haltepunkt gestoppt wird, was befindet sich zu Beginn dieser Methode in Ihrem 'Auth'-Objekt? Was ist in 'auth.info.image'? –