python-social-auth no obtiene los detalles correctos de Google OAuth2

Quiero iniciar sesión en un usuario usando elpython-social-auth funcionalidad para el inicio de sesión de Google Plus en Django. Al iniciar sesión desde mi sitio web, todo funciona bien y los detalles correctos se agregan a la base de datos.

Sin embargo, también quiero autenticarme desde mi aplicación de Android. El usuario inicia sesión en la aplicación, que luego envía el token de acceso a la API de django, que maneja el proceso de inicio de sesión en el siguiente código, adaptado dela documentación:

@csrf_exempt
@serengeti_api_request
@psa('social:complete')
def login_social_token(request, backend):
    # Ensure the token has been specified.
    token = request.META.get('HTTP_ACCESSTOKEN')
    if token is None:
        raise SerengetiApiRequestException('Access token is missing!')

    # Login the user for this session
    user = request.backend.do_auth(token)
    if user is None:
        raise SerengetiApiRequestException('Could not authenticate user!')

    login(request, user)

    # Store the email address if one has been specified (e.g. Twitter)
    email = request.META.get('HTTP_EMAIL')
    if email is not None:
        user.email = email
        user.save()

    # Prepare the parameters to be returned
    response = dict({
        'id': user.id,
        'first_name': user.first_name,
        'last_name': user.last_name,
        'api_key': request.session.session_key,
    })

    # Return a 200 status code to signal success.
    return HttpResponse(json.dumps(response, indent=4), status=200)

Al iniciar sesión desde el sitio web, elsocial_auth_usersocialauth la tabla contiene:

id | provider      | uid       | extra_data
==========================================
10 | google-oauth2 | <myemail> | {"token_type": "Bearer", "access_token": "<token>", "expires": 3600}

Sin embargo, al iniciar sesión desde la aplicación utilizando la función anterior, la operación se completa correctamente, pero la entrada en la tabla se ve así:

id | provider      | uid     | extra_data
=========================================
10 | google-oauth2 | <empty> | {"access_token": "", "expires": null}

También elauth_user la tabla contiene unusername me gustaeeed494412obfuscated48bc47dd9b en lugar del nombre de usuario de Google Plus y elemail El campo está vacío.

¿Qué estoy haciendo mal y cómo puedo obtener la misma funcionalidad que obtengo en el sitio web?

Me gustaría mencionar que implementé la autenticación de Facebook y Twitter desde la aplicación de Android, que llama a la función mencionada anteriormente y almacena los detalles correctos, solo Google Plus está causando problemas.

Respuestas a la pregunta(4)

Su respuesta a la pregunta