AttributeError: el objeto ‘DjangoStrategy’ no tiene ningún atributo ‘backend’ de autenticación social en Python

Esto funcionó la semana pasada. Tal vez hice algo mal y lo desordené en otra parte, o tal vez sea un error, o tal vez sea solo una actualización y lo perdí al leer la documentación.

Tengo una canalización que obtiene el avatar del usuario y guarda la URL:

def get_avatar(strategy, details, response, user, *args, **kwargs): url = None if strategy.backend.name == 'facebook': url = 'http://graph.facebook.com/{0}/picture'.format(response['id']) elif strategy.backend.name == "twitter": if response['profile_image_url'] != '': url = response['profile_image_url'] elif strategy.backend.name == "google-oauth2": if response['image'].get('url') is not None: url = response['image'].get('url') 

Solía ​​funcionar, ahora, me da el error:

  'DjangoStrategy' object has no attribute 'backend' 

Por favor ayuda, algunos usuarios beta ya están usando mi sitio web y, por el momento, no tienen una imagen de perfil.

otra solución:

 def get_profile_picture(backend, user, response, details, *args, **kwargs): url = None profile = UserProfile.objects.get_or_create(user = user)[0] if backend.name == 'facebook': profile.photo = 'http://graph.facebook.com/{0}/picture'.format(response['id']) elif backend.name == "twitter": if response['profile_image_url'] != '': if not response.get('default_profile_image'): avatar_url = response.get('profile_image_url_https') if avatar_url: avatar_url = avatar_url.replace('_normal.', '_bigger.') profile.photo = avatar_url elif backend.name == "google-oauth2": if response['image'].get('url') is not None: profile.photo = response['image'].get('url') profile.save() 

De acuerdo, publicaré la solución que encontré en caso de que alguien tenga el mismo problema. No estoy seguro de si esta es la mejor manera de hacerlo, pero funciona:

  if "facebook" in kwargs['backend'].redirect_uri: url = 'http://graph.facebook.com/{0}/picture'.format(response['id']) elif "twitter" in kwargs['backend'].redirect_uri: if response['profile_image_url'] != '': url = response['profile_image_url'] elif "google" in kwargs['backend'].redirect_uri: if response['image'].get('url') is not None: url = response['image'].get('url') 

Otras soluciones son bienvenidas.