У меня есть приложение React Native Android, которое использует Google Sign-In для получения профиля пользователя и информации электронной почты, а также создает идентификационный токен (используя https://github.com/react-native-community/google-signin). Вход в систему работает, и я показываю имя пользователя, адрес электронной почты, фотографию и т. Д. c в приложении.
Затем я пытаюсь отправить токен идентификатора на сервер Django + DRF, чтобы он мог быть подтвержден и соответствующая учетная запись пользователя создана и / или вошли в систему. Я следую инструкциям здесь: https://developers.google.com/identity/sign-in/web/backend-auth
Вот мой код для конечной точки. На данный момент я только что скопировал токен идентификатора, созданный приложением, и отправил его бэкэнду через Почтальон.
class GoogleView(APIView):
def post(self, request):
token = {'idToken': request.data.get('idToken')}
print(token)
try:
idinfo = id_token.verify_oauth2_token(token, requests.Request(), MY_APP_CLIENT_ID)
print(idinfo)
if idinfo['iss'] not in ['accounts.google.com', 'https://accounts.google.com']:
raise ValueError('Wrong issuer.')
return Response(idinfo)
except ValueError:
# Invalid token
content = {'message': 'Invalid token'}
return Response(content)
Когда я отправляю запрос POST, выполняется первый оператор печати, подтверждающий, что токен получен правильно. Однако второй оператор print никогда не выполняется, и я всегда получаю ответ «Неверный токен». Итак, я считаю, что verify_oauth2_token как-то не работает, но он больше не дает мне информации.
Я никогда раньше не пользовался Google Sign In, поэтому вполне возможно, что я пропустил что-то очевидное. Буду признателен за любую помощь!