Понимание процесса входа в Actions-on-google

У меня есть приложение Google Assistant (Actions on Google), в которое я хочу, чтобы пользователь вошел в систему. Я использую actions-on-google с DialogFlow, который, в свою очередь, имеет веб-перехватчик.

Для определенного действия, когда требуется вход в систему, в веб-перехватчике я запускаю app.askForSignIn ();

У меня есть намерение под названием actions.intent.SIGN_IN, у которого есть событие под названием actions_intent_SIGN_IN. В этом действии я проверяю app.getSignInStatus () и получаю для этого null.

Я что-то упускаю? Будет ли Google Assistant / Actions on Google что-то делать, чтобы извлечь токен и области действия из oauth и связать их с пользователем?


person Rochan S    schedule 14.12.2017    source источник


Ответы (3)


Мне удалось заставить его работать в моем приложении, но я не вызываю app.askForSignIn (), вместо этого я проверил опцию «Требуется вход» в интеграции DialogFlow с Google Assistant, затем я предоставил всю информацию, касающуюся идентификатора клиента. а также секретные URL-адреса и URL-адреса авторизации и токена в разделе «Связывание учетной записи» обзора приложения в разделе «Действия в консоли Google».

Я в основном следовал этому руководству.

PS: Чтобы он работал на консоли, вам нужно либо войти в систему со смартфона, либо вызвать URL-адрес аутентификации прямо в окне браузера.

person Bruno Araújo    schedule 21.12.2017

привет, Рочан, у меня была такая же проблема некоторое время назад, см. мой пост, это все еще нерешенная проблема для меня. неявный поток входа в SDK Google Actions

Но для меня это не имело большого значения. Что вы можете попробовать, так это использовать смартфон с поддержкой Google Assistant и протестировать его там, а не в симуляторе. Может это сработает.

person shortQuestion    schedule 14.12.2017
comment
Я тоже пробовал это. Не работает даже на этом. - person Rochan S; 14.12.2017

Вы должны включить параметр «Вход в систему» ​​в настройках интеграции с Google Ассистентом в диалоговом потоке  введите описание изображения здесь

После включения этого параметра используйте параметр привязки учетной записи в обзоре действий в Google и выполните следующие действия.

Сначала мы должны включить веб-перехватчик, и мы сможем увидеть, как включить веб-перехватчик, в документации выполнения диалогового процесса.

Откройте свой проект в облачной консоли Google 1. Перейдите в облачную консоль Google -> API и службы -> Учетные данные -> Идентификаторы клиента OAuth 2.0 -> Веб-клиент -> Обратите внимание на идентификатор клиента, секрет клиента оттуда -> Загрузить JSON - из примечания json вниз по идентификатору проекта, auth_uri, token_uri -> URI авторизованного перенаправления -> Белый список URL-адресов нашего приложения -> в этой фиксированной части URL-адреса https://oauth-redirect.googleusercontent.com/r/ и добавьте идентификатор проекта в URL -> Сохраните изменения

  1. Действия в Google -> Настройка привязки учетной записи 1. Тип предоставления = Код авторизации 2. Информация о клиенте 1. Введите идентификатор клиента, секрет клиента, auth_uri, token_uri 2. Введите идентификатор пользователя как https://www.googleapis.com/auth и token_uri как https://www.googleapis.co.in 3. Сохраните и запустите из Google Ассистента на каком-либо устройстве. 4. Он покажет ошибку при работе с помощником Google, но не волнуйтесь. 5. Вернитесь в раздел привязки учетной записи в настройках помощника и введите auth_uri как https://accounts.google.com/o/oauth2/auth и token_uri как https://accounts.google.com/o/oauth2/token 6. Поместите области как https://www.googleapis.com/auth/userinfo.profile и https://www.googleapis.com/auth/userinfo.email, и мы готовы к работе. 7. Сохраните изменения.

  2. В журналах хостинг-сервера мы можем видеть значение токена доступа, а через токен доступа мы можем получить подробную информацию об адресе электронной почты.

  3. Добавьте токен доступа к этой ссылке "https://www.googleapis.com/oauth2/v1/userinfo?access_token= ", и мы сможем получить необходимые данные на получившейся странице json.

Кроме того, чтобы получить имя пользователя и адрес электронной почты, вы можете использовать приведенный ниже фрагмент кода.

accessToken = req.get("originalRequest").get("data").get("user").get("accessToken")
r = requests.get(link) print("Email Id= " + r.json()["email"]) print("Name= " + r.json()["name"])

person Jatin Mahajan    schedule 05.04.2018
comment
Я новичок в публикации ответов на stackoverflow. Если вы одобряете этот ответ, это поможет мне получить мотивацию к учебе. Спасибо - person Jatin Mahajan; 05.04.2018