Я настроил предоставление Facebook через django-allauth
.Я хочу изменить извлеченные данные по умолчанию.По умолчанию это ['email', 'username', 'first_name', 'last_name', 'name']
.Мне также нужен birthday
пользователя и его profile photo
.
. Я пытался переопределить DefaultSocialAccountAdapter
, но не нашел там полезных методов.
Также я попытался установить:
SOCIALACCOUNT_PROVIDERS = {
'facebook': {
'FIELDS': [
'id',
'email',
'name',
'birthday',
'locale',
'timezone',
'gender',
],
}
}
Но ничего не произошло.
class SocialAccountAdapter(DefaultSocialAccountAdapter):
def populate_user(self,
request,
sociallogin,
data):
print(data)
super().populate_user(request, sociallogin, data)
data
по-прежнему возвращает только 5 полей по умолчанию
ОБНОВЛЕНО РЕШЕНИЕМ
from allauth.socialaccount.signals import pre_social_login
from django.dispatch import receiver
from datetime import datetime
@receiver(pre_social_login)
def populate_profile(request, sociallogin, **kwargs):
if sociallogin.account.provider == "facebook":
extra_data = sociallogin.account.extra_data
sociallogin.user.birth_date = datetime.strptime(extra_data['birthday'], '%m/%d/%Y').date()
sociallogin.user.full_name = extra_data['name']