2014-02-12 1 views
0

Я знаю, что это частая проблема, поэтому простите меня за повторное задание (это действительно не недостаток исследований), я просто не могу найти способ сделать Facebook Profile Picture load используя Allauth.Allauth Изображение профиля Facebook не загружается

Я использовал http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/ для некоторых советов, все они отлично работали, но для Facebook профиль Изображение, кажется, что-то отсутствует, код на models.py отвечает за передачу URL-адреса для профиля Facebook. Изображение не может быть получено.

на приведенном ниже коде ...

 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 %} 

Отдается здесь How can I get the user's facebook id with django-allauth? по Pennersr также не дает мне доступ пользователей к ID.

Спасибо

ответ

0

facebook API не позволяет прямой доступ к изображению, Вы должны написать код, чтобы загрузить ответ от facebook URL профиля на сервер и использовать вашу копию изображения.

Приведенный выше код дает вам URL, который facebook перенаправляет на их хранение, поэтому используйте

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() 

Но этот подход не рекомендуется, так как это приведет к задержке в ответ Некоторые рекомендуют сельдерей фоновую задачу, чтобы загрузить изображение, так что загляните в это тоже.