Тип привязки учетной записи OAuth поддерживает два стандартных потока OAuth 2.0: неявный поток и поток кода авторизации . В неявном потоке кода Google открывает конечную точку авторизации в браузере пользователя. После успешного входа вы возвращаете в Google долгосрочный токен доступа. Этот токен доступа затем включается в каждый запрос, отправляемый Ассистентом к вашему действию.
OAuth является рекомендуемым решением для связывания учетных записей, если применимо следующее:
- У вас есть существующая реализация сервера OAuth 2.0, и вы не можете расширить конечную точку обмена токенами, чтобы добавить поддержку протоколов Google для автоматического связывания и создания учетной записи на основе идентификационного токена (т. е. добавить параметры
intent=get
иintent=create
в запросы). до этой конечной точки).
Чтобы убедиться, что OAuth является для вас подходящим решением, см. страницу «Выберите тип привязки учетной записи» .
Ключевые термины
Прежде чем читать о том, как работает OAuth, ознакомьтесь со следующими терминами:
- Вспомогательное намерение для входа в учетную запись: вспомогательное намерение, которое вы вызываете, чтобы запросить у Ассистента процесс связывания учетной записи. Дополнительную информацию см. в разделе Вход в учетную запись .
- Контекстная строка: настраиваемая строка, которую вы добавляете в вспомогательное намерение входа в учетную запись, которая сообщает пользователю, почему вам нужно, чтобы он связал свою учетную запись.
Поток кода авторизации. Во время этого потока OAuth 2.0 Google открывает конечную точку авторизации в браузере пользователя. Если вход успешен, ваш сервис создает код авторизации и возвращает его в Google. Google отправляет этот код авторизации на вашу конечную точку обмена токенами, которая проверяет подлинность кода и возвращает токен доступа и токен обновления.
Для этого потока требуются две конечные точки:
- Конечная точка авторизации: конечная точка, которая отвечает за поиск или получение согласия пользователей на доступ к данным. Эта конечная точка выполняет следующие действия:
- Предоставляет пользовательский интерфейс входа пользователям, которые еще не вошли в систему.
- Записывает согласие на запрошенный доступ в форме кратковременного кода авторизации.
- Конечная точка обмена токенами. Эта конечная точка используется для получения зашифрованных строк, называемых токенами , которые разрешают пользователю действия получить доступ к вашей службе. Эта конечная точка отвечает за два типа обмена:
- Заменяет код авторизации на долгосрочный токен обновления и кратковременный токен доступа. Этот обмен происходит, когда пользователь проходит процедуру привязки учетной записи.
- Заменяет долгосрочный токен обновления на кратковременный токен доступа. Этот обмен происходит, когда Google нужен новый токен доступа, поскольку срок действия того, у которого истек срок действия.
- Конечная точка авторизации: конечная точка, которая отвечает за поиск или получение согласия пользователей на доступ к данным. Эта конечная точка выполняет следующие действия:
Неявный поток кода: во время этого потока OAuth 2.0 Google открывает конечную точку авторизации в браузере пользователя. Если вход успешен, вы возвращаете долгосрочный токен доступа в Google. Этот токен доступа затем включается в каждый запрос, отправляемый Ассистентом к вашему действию. Для этого потока требуется только конечная точка авторизации.
Токен доступа: токен, который разрешает вашей службе получать доступ к частям данных пользователя. Токены доступа связаны с каждым отдельным пользователем и не должны быть угаданы.
Токен обновления: токен, который заменяется на новый токен доступа после истечения срока действия краткосрочного токена доступа.
Как это работает
В этом разделе описывается общий поток кода авторизации OAuth и неявные потоки. В следующем разделе « Потоки OAuth » описываются различные потоки, которые могут возникать при использовании OAuth.
Поток кода авторизации можно резюмировать следующим образом:
- Ваше действие спрашивает пользователя, хотят ли они связать свою учетную запись с вашим сервисом.
- После того как пользователь соглашается связать аккаунты, Google открывает конечную точку авторизации в браузере пользователя. Если поток для действия запускается на голосовом устройстве, Google перенесет выполнение на телефон.
- Пользователь входит в систему (если он еще не вошел в систему) и предоставляет Google разрешение на доступ к своим данным с помощью вашего API (если он еще не предоставил разрешение).
- Ваш сервис создает код авторизации и возвращает его в Google, перенаправляя браузер пользователя обратно в Google с прикрепленным к запросу кодом авторизации.
- Google отправляет код авторизации в конечную точку обмена токенами, которая проверяет подлинность кода и возвращает токен доступа и токен обновления . Токен доступа — это недолговечный токен, который ваша служба принимает в качестве учетных данных для доступа к API. Токен обновления — это долгосрочный токен, который Google может хранить и использовать для получения новых токенов доступа по истечении срока их действия.
- После того как пользователь завершил процесс привязки учетной записи, каждый последующий запрос, отправленный из Ассистента на ваш веб-перехватчик выполнения, содержит токен доступа.
Неявный поток кода можно резюмировать следующим образом:
- Ваше действие спрашивает пользователя, хотят ли они связать свою учетную запись с вашим сервисом.
- После того как пользователь соглашается связать аккаунты, Google открывает конечную точку авторизации в браузере пользователя.
- Пользователь входит в систему (если он еще не вошел в систему) и предоставляет Google разрешение на доступ к своим данным с помощью вашего API (если он еще не предоставил разрешение).
- Ваша служба создает токен доступа и возвращает его в Google, перенаправляя браузер пользователя обратно в Google с прикрепленным к запросу токеном доступа.
- После того как пользователь завершил процесс привязки аккаунта, Google вызывает API вашей службы и прикрепляет токен доступа к каждому запросу. Ваша служба проверяет, что токен доступа предоставляет Google авторизацию для доступа к API, а затем выполняет вызов API.
Основной поток кода авторизации выглядит следующим образом:
- Ваше действие спрашивает пользователя, хотят ли они связать свою учетную запись с вашим сервисом.
- После того как пользователь соглашается связать аккаунты, Google открывает конечную точку авторизации в браузере пользователя. Если поток для действия запускается на голосовом устройстве, Google перенесет выполнение на телефон.
- Пользователь входит в систему (если он еще не вошел в систему) и предоставляет Google разрешение на доступ к своим данным с помощью вашего API (если он еще не предоставил разрешение).
- Ваша служба создает код авторизации и возвращает его в Google, перенаправляя браузер пользователя обратно в Google с прикрепленным к запросу кратковременным кодом авторизации.
- Google отправляет код авторизации на вашу конечную точку обмена токенами, которая проверяет подлинность кода и возвращает токен доступа и токен обновления . Токен доступа — это недолговечный токен, который ваша служба принимает в качестве учетных данных для доступа к API. Токен обновления — это долгосрочный токен, который Google может хранить и использовать для получения новых токенов доступа по истечении срока их действия.
- После того как пользователь завершил процесс привязки учетной записи, каждый последующий запрос, отправленный из Ассистента на ваш веб-перехватчик выполнения, содержит токен доступа.
Потоки OAuth
В этом разделе рассматриваются различные потоки, которые могут возникнуть при использовании OAuth.
Каждый поток содержит следующие общие шаги после того, как пользователь вызывает ваше действие:
В приведенном выше потоке вы вызываете вспомогательное намерение actions.intent.SIGN_IN
, чтобы запустить процесс связывания учетной записи. Помощник спрашивает пользователя, хотят ли они связать свою учетную запись с вашим сервисом, и показывает ему экран с запрошенными разрешениями. Когда пользователь дает согласие, Google перенаправляет его на конечную точку авторизации вашей службы в браузере. Пользователь входит в систему (или, в зависимости от вашей конфигурации, создает новую учетную запись) и предоставляет вашему действию разрешение на доступ к своим данным.
Потоки после этого момента различаются в зависимости от того, реализовали ли вы неявный поток или поток кода авторизации. Эти потоки описаны в следующих разделах.
Поток 1. Пользователь входит в систему с использованием неявного потока.
После того как пользователь войдет в систему и его учетные данные проверятся, ваша служба создает долгосрочный токен доступа и возвращает его в Google. На этом этапе личность пользователя в вашем действии связана с учетной записью, с которой он вошел в систему, а токен доступа прикрепляется к каждому вызову API, который Google выполняет к API вашего сервиса.
Поток 2. Пользователь входит в систему с помощью кода авторизации.
После того как пользователь войдет в систему и его учетные данные проверятся, ваш сервис создает код авторизации и возвращает его в Google.
Этот код авторизации отправляется в конечную точку обмена токенами, которая возвращает как токен доступа, так и токен обновления. На этом этапе личность пользователя в вашем действии связана с любой учетной записью, под которой он вошел в систему, и каждый последующий запрос, отправленный от Ассистента на ваше выполнение, содержит токен доступа.