Я хочу отобразить изображение current_user в своем шаблоне. Как я могу получить доступ к идентификатору Facebook пользователя, когда я использую django-allauth?
Как я могу получить идентификатор пользователя facebook с помощью django-allauth?
Ответы (1)
Для каждого пользователя, зарегистрированного через социальную учетную запись, доступен экземпляр SocialAccount
. Эта модель имеет внешний ключ для User
. Обратите внимание, что пользователь может подключить несколько учетных записей социальных сетей к своей локальной учетной записи, поэтому на практике может быть доступно более одного SocialAccount
экземпляра.
Как вы хотите справиться с этим, зависит от проекта. Я могу представить, что кто-то захочет скопировать изображение профиля локально, или, возможно, вы захотите отдать предпочтение изображению профиля Google+ над изображением Facebook и так далее.
Модель SocialAccount
имеет несколько вспомогательных методов, которые дают вам доступ к основам учетной записи, таким как изображение профиля. В общем, это быстрый и грязный способ получить доступ к первому доступному изображению профиля:
{{user.socialaccount_set.all.0.get_avatar_url}}
Идентификатор также доступен:
{{user.socialaccount_set.all.0.uid}}
См. также: https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/models.py#L72