Ich habe es erfolgreich geschafft, django-socialauth
zu verwenden, um ein Konto (in diesem Fall ein Instagram-Konto) mit einem vorhandenen Benutzerkonto zuzuordnen. Ich habe auch meine Pipeline eingerichtet, um zusätzliche Benutzerdetails zu sammeln:Wie aktualisiere ich die "extra_data" eines Benutzers, nachdem sie mit dem Konto verknüpft wurden?
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()
Dies funktioniert hervorragend, wenn ein Konto zum ersten Mal zugeordnet wird. Wenn das Konto jedoch bereits verknüpft wurde, ist das Feld username
in extra_data
nicht vorhanden.
Wie kann ich die extra_data
eines Benutzers aktualisieren, nachdem die Verknüpfung bereits hergestellt wurde? Gibt es eine Möglichkeit, django-socialauth
zu verwenden, ohne die Verbindung zu trennen und wiederherzustellen oder die API des Kontos (z. B. Instagram) zu verwenden?
Wenn es hilft, dann ist dies meine Pipeline im Moment:
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'
)