python-social-auth не получает правильные данные Google OAuth2
Я хочу войти в систему пользователя, используяpython-social-auth
функциональность для входа в Google Plus в Django. При входе с моего веб-сайта все работает нормально, и правильные данные добавляются в базу данных.
Тем не менее, я хочу пройти аутентификацию и в своем приложении для Android. Пользователь входит в приложение, которое затем отправляет токен доступа в API django, который обрабатывает процесс входа в следующем коде, адаптированном издокументация:
@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)
При входе с веб-сайтаsocial_auth_usersocialauth
таблица содержит:
id | provider | uid | extra_data
==========================================
10 | google-oauth2 | <myemail> | {"token_type": "Bearer", "access_token": "<token>", "expires": 3600}
Тем не менее, при входе из приложения с использованием вышеуказанной функции операция завершается нормально, но запись в таблице выглядит следующим образом:
id | provider | uid | extra_data
=========================================
10 | google-oauth2 | <empty> | {"access_token": "", "expires": null}
Так жеauth_user
таблица содержитusername
лайкeeed494412obfuscated48bc47dd9b
вместо имени пользователя Google Plus иemail
поле пустое
Что я делаю не так и как я могу получить ту же функциональность, что и на сайте?
Я хотел бы отметить, что я реализовал аутентификацию Facebook и Twitter из приложения Android, которое вызывает вышеупомянутую функцию и хранит правильные данные, только Google Plus вызывает проблемы.