Я пытаюсь включить Facebook-регистрацию/логин с помощью omniauth-facebook для рельсов. Я успешно получаю имя, фамилию и адрес электронной почты Facebook. К сожалению, получение изображения для создания изображения профиля не было успешным. В конфигурации/devise.rb у меня есть: (некоторые редакции сделали)OmniAuth Facebook с Devise не возвращает изображение
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'
Моего класс Пользователя:
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
...
Вкладыша заявление я получаю от локального хоста:
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 вернулся из 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">
Как отредактировать скопировать фотографию профиля из Facebook и использовать ее в качестве поля для фотографий для пользователей?
я добавил хэш вернулся из OmniAuth. По-видимому, изображение работает, но не назначается должным образом в классе User. –
Когда вы остановились в точке останова, что находится в вашем объекте 'auth' в начале этого метода? Что находится в 'auth.info.image'? –