Как аутентифицировать пользователя только с учетной записью Google в действиях в Google?
В настоящее время Google Assitant включает простой способ запрашивать неидентифицируемую информацию о пользователе и подробный поток для аутентификации пользователя на стороннем сервисе через OAuth2. Что, если все, что мне нужно, - это аутентификация пользователя в самом Google? Я попробовал заполнить учетную запись, связывающую поток, используя информацию Google OAuth2, но это, похоже, не сработает. Если эта последняя вещь должна работать плавно, чем было бы достаточно ответа.
Контекст: пользователи уже аутентифицируются только с Google на соответствующей веб-странице. Все, что мне нужно, это связать эту уже аутентифицированную учетную запись с менее аутентифицированной учетной записью в Google Assistant.
Ответы
Ответ 1
После контакта с Google текущая ситуация кажется, что вы должны настроить свой собственный сервер OAuth2, а затем на экране входа в систему вашего сервера OAuth2 вы должны запустить поток Google OAuth2.
у вас должна быть своя конечная точка с Google Oauth2 - правильно, что вы не можете использовать Google Oauth как поставщика. Чтобы использовать службу Google OAuth, вы можете использовать кнопку "войти в систему с Google" в своей собственной конечной точке.
Источник: обращение к действиям Google в службе поддержки Google
В настоящее время вид слова оскорблен, так как кажется, что это огромный контроль над частью Google.
Ответ 2
Обновление, 25 октября 2017 года:
Начиная с 4 октября или 7 октября Google обновил свою политику (снова), чтобы восстановить язык, ограничивающий конечные точки OAuth, которые действительны. Теперь термины включают
При внедрении связывания ссылок с использованием OAuth вы должны владеть своей конечной точкой OAuth
и появляется (из комментариев ниже), что теперь они проверяют конечные точки Google, чтобы этот метод не работал.
На этом этапе вы можете настроить свой собственный сервер OAuth2.
Оригинальное сообщение:
В широком смысле задачи, которые необходимо выполнить, должны состоять из четырех частей:
- Настройте свой проект (в облачной консоли), чтобы API-интерфейс календаря был включен и что клиент OAuth2 настроен правильно.
- Настройте ссылку "Действие для учетной записи" в консоли действий.
- Настройте действия в Google Integration для агента API.AI, чтобы указать, что требуется вход.
- Когда API.AI называет ваш webhook для выполнения намерения, он будет включать токен аутентификации как часть JSON. Вы можете использовать этот токен для совершения звонков в нужные API Google.
Настройка облачного проекта
Вам нужно настроить облачный проект, чтобы он имел доступ к необходимым API-интерфейсам Google и настраивал идентификатор клиента, секретный и перенаправляемый идентификатор OAuth2.
-
Перейдите в https://console.cloud.google.com/apis/dashboard и убедитесь, что у вас есть проект, над которым вы работаете с выбранным. Затем убедитесь, что у вас есть необходимые вам API.
-
Выберите меню "Учетные данные" слева. Вы должны увидеть что-то вроде этого:
![Экран учетных данных]()
-
Выберите "Создать учетные данные", а затем "Идентификатор клиента OAuth" ![Создать учетные данные]()
-
Выберите, что это для "веб-приложения" (это... kinda...)
-
Введите имя. На скриншоте ниже я использовал "Action client", поэтому я помню, что это действительно для Actions в Google.
-
В разделе "Авторизованные переадресации URI" вам нужно включить URI формы https://oauth-redirect.googleusercontent.com/r/your-project-id
, заменив часть "ваш-проект-идентификатор"... вашим идентификатором проекта в Cloud Console. На этом этапе экран должен выглядеть примерно так: ![введите описание изображения здесь]()
-
Нажмите кнопку "Создать", и вы получите экран с идентификатором клиента и секретным ключом. Теперь вы можете получить их копию, но вы также можете получить их позже. ![введите описание изображения здесь]()
-
Нажмите "ОК", и вы вернетесь на экран "Учетные данные" с добавленным новым идентификатором клиента. Вы можете щелкнуть значок карандаша, если вам когда-либо понадобится снова получить идентификатор и секрет (или reset секрет, если он был скомпрометирован).
![введите описание изображения здесь]()
Настроить консоль действий
Как только у нас будет настройка OAuth для проекта, нам нужно сообщить Actions, что это то, что мы будем использовать для аутентификации и авторизации пользователя.
-
Перейдите в https://console.actions.google.com/ и выберите проект, с которым будете работать.
-
В обзоре проделайте все необходимые настройки, пока не сможете перейти к шагу 4 "Учетная запись учетной записи". Это может потребовать установки имен и значков - вы можете вернуться позже, если необходимо, чтобы исправить их.
![введите описание изображения здесь]()
- Выберите тип гранта "Код авторизации" и нажмите "Далее" .
![введите описание изображения здесь]()
-
В разделе "Информация о клиенте" введите идентификатор клиента и секретный ключ клиента при создании учетных данных в Cloud Console. (Если вы забыли, перейдите в раздел "Учетные данные API Cloud Console" и нажмите на карандаш.)
-
Для URL авторизации введите https://accounts.google.com/o/oauth2/v2/auth
-
Для URL-адреса токена введите https://www.googleapis.com/oauth2/v4/token
-
Нажмите "Далее"
![введите описание изображения здесь]()
- Теперь вы настраиваете свой клиент для областей, которые вы запрашиваете. В отличие от большинства других мест вы вводите области действия - вам нужно иметь по одному в каждой строке. Затем нажмите "Далее" .
![введите здесь описание изображения]()
- Вам нужно ввести инструкции по тестированию. Перед отправкой вашего действия эти инструкции должны содержать тестовую учетную запись и пароль, которые команда обзора может использовать для ее оценки. Но вы можете просто поместить что-то там во время тестирования, а затем нажать кнопку "Сохранить".
Настроить API.AI
В API.AI вам нужно указать, что пользователь должен выполнить вход для использования Action.
-
Перейдите в https://console.api.ai/ и выберите проект, с которым работаете.
-
Выберите "Интеграции", а затем "Действия в Google". Включите его, если вы еще этого не сделали.
-
Установите флажок "Подписать для приветствия".
![введите описание изображения здесь]()
Управлять вещами в своем веб-хостинге
После всей этой настройки обработка вещей в вашем webhook довольно проста! Вы можете получить токен доступа OAuth одним из двух способов:
-
Если вы используете библиотеку JavaScript, вызывая app.getUser().authToken
-
Если вы смотрите на тело JSON, оно находится в originalRequest.data.user.accessToken
Вы будете использовать этот токен доступа, чтобы совершать вызовы с конечных точек API Google, используя методы, определенные в других местах.
Вам не нужен токен обновления - помощник должен передать вам действительный токен доступа, если пользователь не отменил доступ.
Ответ 3
Вам необходимо реализовать протокол Oauth с любым приложением Google Assistant, которое вы разрабатываете. Позвольте мне быть более ясным:
- Пользователь находится на помощнике, вам нужно связать его с любыми данными
у вас есть на стороне вашего приложения.
- Доступ к данным, которые у вас есть
ваш пользователь защищен токеном доступа
- Затем Google должен
попросите, чтобы этот токен имел доступ к этому ресурсу
- Когда
у google есть токен, который он может отправить в приложение, чтобы он проверял каждый
запросы на получение ресурса.
Вот почему вам нужно реализовать свой собственный сервер oauth (честно говоря, это всего лишь две конечные точки в вашем приложении): идентификатор проверяется на стороне google, но связь между пользователем и ресурсом для доступа может быть известна тобой.
Вышеописанный процесс действителен, вам просто нужно указать свою конечную точку маркера и собственную конечную точку auth.
Обратите внимание: если вы хотите только проверить, что пользователь зашел в Google и получил его электронную почту, вам просто нужно реализовать оптимизированный поток идентичности, который не требует конечной точки /auth (https://developers.google.com/actions/identity/oauth2-assertion-flow)
Это говорит о том, что я реализовал поток, но получаю ту же ошибку:
expected_inputs[0].possible_intents[0]: Transactions/Identity API must be enabled before using.