Я пытаюсь аутентифицировать мобильное приложение для платформы Android на пользовательский node.js-сервер api. Я хотел бы использовать токены Google OAuth2 для этого, вместо того чтобы откатывать мою собственную аутентификацию, поскольку устройства Android с установленным Google Play делают это доступным для разработчиков приложений. Я использую вызов GoogleAuthUtil.getToken
из библиотеки Служб Google Play, зарегистрированный здесь. Я пытаюсь следовать советам, изложенным в этой блоге разработчиков разработчиков Android
Метод getToken
возвращает в моем случае длинную строку длиной 857 байт. Если я попытаюсь передать этот токен в конечную точку Google TokenInfo, он возвращает:
{'error': 'invalid_token', 'error_description': 'Недопустимое значение'}
Что я здесь делаю неправильно? В "области" вызова getToken я отправляю:
audience:server:client_id:**i_put_my_clientid_here**
. У меня есть клиент, сгенерированный для "установленных приложений". Используя этот идентификатор клиента, вызов getToken не работает вообще. Когда я создавал идентификатор клиента для "учетной записи службы", вызов преуспевает, но я получаю токен 857 байт, который терпит неудачу при передаче в конечную точку TokenInfo, как описано выше.
EDIT:
Я также создал идентификатор клиента для "веб-приложений", поскольку, как представляется, это правильный идентификатор клиента, который используется при вызове getToken
. Но поведение такое же, я возвращаю токен 857 байт, который не проверяется при вызове конечной точки Google.
Как я могу правильно получить действительный токен аутентификации с помощью сервисов Google Play на Android? Как только у меня есть правильный токен, какая библиотека node.js, чтобы проверить ее на стороне сервера? Могу ли я использовать passport-google-oauth?