正在获取与Shrine的FB个人资料照片



我在项目中使用Devise进行身份验证,并且在使用Shrine gem通过FB登录时遇到了获取图像的问题。

我有一个标准的设计方法,可以在用户模型中从Omniauth提供商获取数据:

def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.password = Devise.friendly_token[0, 20]
# Standard version
user.avatar = auth.info.image
# For Google:
# user.avatar_remote_url = auth.info.image
end
end

注释行适用于Google日志记录,并将图像正确设置为auth.info.image返回链接,当粘贴到浏览器中时,会在浏览器中打开图像。然而,对于FB,这行代码导致用户无法持久存在——在FB的情况下,auth.info.image返回一个链接,如果粘贴到浏览器中,则该链接将文件直接下载到HDD。

另一方面,标准版本在尝试注册时会导致错误809: unexpected token at 'http://graph.facebook.com/v4.0/xxxxxxxxxxx/picture?access_token=xxxxxxxx

在另一个项目中,我成功地以标准方式从fb获得了图像,但在那里我使用了回形针。我肯定为Shrine有一个合适的设置,用户也为数据做好了准备(仔细检查了一下,它也适用于带有_remote_url助手的Google oauth(-我不知道如何用Shrine正确处理从FB接收的数据。有什么想法吗?

Underhttps://github.com/simi/omniauth-facebook#configuring它指出提供者的默认配置是CCD_ 4,但事实并非如此。答案是将secure_image_url: true添加到我的Facebook提供商哈希中,然后它通过可以分配给user.avatar_remote_urlauth.info.image返回https链接,而不是http。问题可以结束。

最新更新