我知道这是一个经常出现的问题,所以请原谅我再次提问(这真的不是缺乏研究),我似乎无法找到使用Allauth加载Facebook Profile Picture的方法。
我已经使用http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/获得了一些提示,它们都运行良好,但是对于Facebook Profile Picture似乎缺少了什么,models.py上负责传递Facebook Profile Picture的URL的代码无法获取Facebook用户ID
在下面的代码中......
http://graph.facebook.com/{}/picture?width=40&height=40
...我尝试过使用fb_uid和user_id,但仍然无法加载。
在模板上调用配置文件URL:
{% if request.user.is_authenticated %}
<img src="{{ request.user.profile.profile_image_url }}"/>
{% endif %}
此处建议{Pennerr How can I get the user's facebook id with django-allauth?也不允许我访问用户ID。
谢谢
答案 0 :(得分:2)
facebook api不允许直接访问图像,您必须编写代码以将Facebook个人资料网址的响应下载到您的服务器并使用您的图像副本。
上面的代码为您提供了facebook重定向到其存储空间的URL,因此请使用
url = "http://graph.facebook.com/%s/picture?type=large" % response['id']
avatar = urlopen(url)
profile = user.get_profile()
profile.profile_photo.save(slugify(user.username + " social") + '.jpg',
ContentFile(avatar.read()))
profile.save()
但不推荐这种方法,因为它会导致响应延迟,有些人建议芹菜后台任务下载图像,所以也要考虑一下。