Неявная привязка аккаунта Google к обмену токенами не происходит
Чтобы добиться привязки аккаунта между базой данных Google Firestore, которая использует аутентификацию Google с адресом электронной почты / паролем, и аккаунтом Google пользователя (например, на Действиях на устройстве Google), я пытаюсь реализовать неявный поток связывания аккаунтов Google, как описано здесь:
https://developers.google.com/actions/identity/google-sign-in-oauth?creation=no
На консоли я указал URL авторизации и URL для обмена токенами.
URL авторизации открывает веб-логин. На этом экране - когда пользователь успешно входит в Firebase с помощью электронной почты / пароля - я создаю токен из идентификатора пользователя и возвращаю его по указанному URL-адресу перенаправления, включая состояние и тип токена, как указано в документации:
Похоже, что пока все работает нормально, экран входа закрывается, и с этого момента моя учетная запись считается связанной, и все запросы помощника по Google содержат указанный мной токен.
Но я просто не понимаю, что с этим делать дальше. Насколько я понимаю документы, после того, как учетная запись связана, она должна вызывать конечную точку обмена токенами для обмена этим пользовательским токеном с токеном доступа и / или обновления и дополнительной информацией о пользователе. Чтобы увидеть входящий запрос в конечной точке обмена, я предоставил простой скрипт, который выглядит следующим образом:
exports.exchangeToken = functions.https.onRequest((req, res) => {
console.log(JSON.stringify(req.headers))
res.send(JSON.stringify(req.headers))
}
но согласно журналам это никогда не вызывается. Вместо этого веб-крючок, который я настроил в разделе выполнения DialogFlow, вызывается напрямую. Чего мне не хватает, чтобы инициировать обмен токенами и получить идентификатор пользователя моего проекта Firebase до вызова выполнения?