Udało mi się użyć django-socialauth
, aby powiązać konto (w tym przypadku konto na Instagramie) z istniejącym kontem użytkownika. Przygotowałem również potok do zbierania dodatkowych informacji o użytkowniku:Jak zaktualizować `extra_data 'użytkownika po powiązaniu z kontem?
def update_social_auth(backend, details, response, social_user, uid, user,
*args, **kwargs):
if getattr(backend, 'name', None) in ('instagram', 'tumblr'):
social_user.extra_data['username'] = details.get('username')
social_user.save()
Działa to świetnie, gdy konto jest powiązane po raz pierwszy. Jeśli jednak konto zostało już powiązane, pole username
nie będzie dostępne w extra_data
.
Jak mogę zaktualizować użytkownika extra_data
po utworzeniu powiązania? Czy jest jakiś sposób, aby użyć django-socialauth
, aby to zrobić bez odłączania i ponownego łączenia lub korzystania z API konta (na przykład Instagrama)?
Jeśli to pomoże, to moja rurociąg w tej chwili:
SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.social.load_extra_data',
'social_auth.backends.pipeline.user.update_user_details',
'apps.utils.social.utils.update_social_auth'
)