Очень простой вариант использования, объясняющий мою проблему: мое приложение запрашивает пин-код для некоторых взаимодействий. Теперь пользователь трижды дает мне неправильный пин-код. Затем я хочу сбросить его доступ и заставить его повторно привязать свою учетную запись. Я могу сделать это довольно легко в моей внутренней базе данных, но мне нужен способ сообщить Google, что его текущий токен больше не действителен. В противном случае Google Assistant отказывается отправлять мне отвергнутый токен.
Обновление 2018-03-01: с новыми встроенными намерениями / событиями я также попытался отправить событие actions_intent_SIGN_IN
через атрибут followupEvent
, но это только заставило помощника Google вспомнить мой API с GOOGLE_ASSISTANT_WELCOME
(с старый токен oauth ..) вместо перезапуска рабочего процесса входа.
Исходное сообщение
У меня есть приложение Google Assistant с диалоговым потоком, которое заставляет пользователя войти в систему, чтобы использовать мое приложение. Начальный рабочий процесс oauth работает, и я получаю токен во всех вызовах API.
Теперь я хочу заставить пользователя повторно запустить рабочий процесс связывания учетной записи при определенных обстоятельствах. Для этого я удаляю токен oauth из своей внутренней базы данных и отправляю пользователю именно этот ответ, который должен соответствовать вызову app.askForSignIn()
, если вы используете sdk: https://github.com/actions-on-google/actions-on-google-nodejs/blob/fe29016d472eeb1d080e2b575236076e9341199e/test/dialogflow-app-test.js#L1827
Но это не работает. Помощник не говорит пользователю повторно запустить рабочий процесс связывания oauth и не удаляет сохраненный токен oauth. Он даже не использует токен обновления для получения нового токена доступа!
Кроме того, вместо использования атрибута «речь» в моем ответе симулятор отвечает: «Извините, я не получил никакого ответа». - хотя мой симулятор настроен на немецкий язык.
(Я также попытался исключить несколько, возможно, ненужных параметров, таких как атрибут contextOut
. Это приводит к другому запросу, чем тот, который указан в официальных источниках sdk, но также не дает желаемых результатов.)
actions.intent.SIGN_IN
, чтобы запустить рабочий процесс связывания учетных записей, и это то, что я пробовал. - person Toni   schedule 20.11.2017expired code
ошибку? Это должно указывать на то, что необходимо получить новый токен OAuth, и он должен отправить токен обновления. - person Nick Felker   schedule 22.11.2017expired code
в Dialogflow? Это тоже не помогло, веб-симулятор снова выдал мне ошибку проверки. На самом деле, любой другой результат удивил бы меня: зачем диалогу потоку заботиться о моем токене oauth? Разве мне не пришлось бы вместо этого помещать что-нибудь в хэшdata: { google: {} }
, как я пробовал это выше сactions.intent.SIGN_IN
? - person Toni   schedule 23.11.2017