Sono riuscito a utilizzare con successo django-socialauth
per associare un account (in questo caso, un account instagram) a un account utente esistente. Ho anche impostato la mia pipeline per raccogliere ulteriori dettagli utente:Come aggiornare un `extra_data` di un utente dopo che sono stati associati all'account?
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()
Questo funziona perfettamente quando un account è associato per la prima volta. Tuttavia, se l'account è già stato associato, il campo username
non sarà presente in extra_data
.
Come aggiornare un utente extra_data
dopo che l'associazione è già stata effettuata? C'è un modo per utilizzare lo standard django-socialauth
senza disconnettere e riconnettersi o utilizzare l'API dell'account (ad esempio Instagram)?
Se aiuta, questo è il mio gasdotto in questo momento:
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'
)