Ошибки авторизации

В процессе авторизации Google OAuth может вернуть ошибку. Используйте это руководство для устранения наиболее распространенных ошибок во время этого процесса.

Поиск неисправностей

Дополнительные сведения о Google OAuth см. в разделе Использование OAuth 2.0 для доступа к API Google .

Срок действия токена обновления истекает

Токены обновления могут перестать работать через 7 дней, если идентификатор клиента не утвержден — одна из возможных причин. 7-дневный срок действия токена не связан с одобрением коммерческого использования или песочницы. Учетная запись службы или пользователя должна получить одобрение своего идентификатора клиента OAuth 2.0 и запустить его в производство, чтобы продлить срок действия токена. Дополнительную информацию см. в разделе «Обновление срока действия токена» .

Доступ запрещен

Если вы настроили экран согласия OAuth в Google Cloud и тип пользователя — « Внешний », вы получите сообщение об ошибке «Доступ запрещен», если вы попытаетесь связать учетную запись с учетной записью Google, которая не указана в качестве тестового пользователя для вашего приложения. . Обязательно добавьте учетную запись Google в раздел «Тестовые пользователи» на экране согласия OAuth .

Ошибка диспетчера подключений партнеров (PCM)

Справку по устранению ошибок, возникающих при доступе к PCM, см. в разделе «Справочник по ошибкам Partner Connections Manager (PCM)» .

Google не подтвердил это приложение

API SDM использует ограниченную область действия. Это означает, что любые приложения, использующие эту область во время авторизации, будут «непроверенными», пока проверка API OAuth не будет завершена. При использовании Device Access в личных целях проверка OAuth API не требуется.

Во время процесса авторизации вы можете увидеть экран «Google не проверил это приложение», который появляется, если область действия sdm.service не настроена на экране согласия OAuth в Google Cloud. Этот экран можно обойти, щелкнув параметр «Дополнительно» , а затем нажав «Перейти к имени проекта (небезопасно)» .

Дополнительную информацию см. в разделе «Экран непроверенного приложения» .

Неверный клиент

При попытке получить токен доступа или обновления вы получите сообщение об ошибке «Неверный клиент», если предоставите неправильный секретный ключ клиента OAuth 2.0. Убедитесь, что значение client_secret , которое вы используете в вызовах токена доступа и обновления, соответствует используемому идентификатору клиента OAuth 2.0, как указано на странице Google Cloud Credentials .

Неверный запрос, отсутствует требуемая область действия.

После предоставления разрешений в PCM вы можете столкнуться с ошибкой «Неверный запрос»: «Отсутствует обязательный параметр: область». Убедитесь, что значение scope , которое вы используете в вызовах авторизации, такое же, как значение, которое вы установили для клиента OAuth 2.0, как указано на странице учетных данных Google Cloud .

Несоответствие URI перенаправления

При прохождении авторизации вы можете столкнуться с ошибкой «Redirect uri несоответствие». Убедитесь, что значение redirect_uri , которое вы используете в вызовах авторизации, совпадает со значением, которое вы установили для клиента OAuth 2.0, как указано на странице учетных данных Google Cloud .

Краткая справка

Используйте эту ссылку, чтобы быстро выполнить действия по авторизацииuser и привязке его учетной записи Google.

Чтобы использовать этот краткий справочник, отредактируйте каждую переменную-заполнитель в примерах кода, указав значения для вашей конкретной интеграции, а затем скопируйте и вставьте при необходимости:

1 ПКМ

Направьте user на ссылку PCM в вашем приложении, заменив:

  1. project-id с вашим идентификатором Device Access Project
  2. oauth2-client-id с идентификатором клиента OAuth2 из ваших учетных данных Google Cloud.
  3. redirect-uri с URI перенаправления, указанным для используемого вами идентификатора клиента OAuth2.
  4. scope с одной из доступных областей
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 Код авторизации

После предоставления разрешений через PCM для выбранной области user должен быть перенаправлен на указанный вами URI перенаправления. Код авторизации возвращается в качестве параметра code в URL-адресе, который должен быть в следующем формате:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 токена доступа

Используйте код авторизации для получения токена доступа, который можно использовать для вызова API SDM от имени пользователя.

Выполните вызов POST к конечной точке OAuth Google, заменив:

  1. oauth2-client-id и oauth2-client-secret с идентификатором клиента OAuth2 и секретом клиента из ваших учетных данных Google Cloud.
  2. authorization-code с кодом, который вы получили на предыдущем шаге
  3. redirect-uri с URI перенаправления, указанным для используемого вами идентификатора клиента OAuth2.

Google OAuth возвращает два токена: токен доступа и токен обновления.

Запрос

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

Ответ

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 API-вызов

Авторизация не будет завершена, пока вы не сделаете вызов API с токеном доступа user. Этот первоначальный вызов завершает процесс авторизации и активирует события.

Для завершения авторизации необходимо использовать один из вызовов API, перечисленных для указанной области.

сдм.сервис

устройства

Дополнительную информацию см. в справочнике по API devices.list .

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 токенов обновления

Токены доступа для API SDM действительны только в течение 1 часа, как указано в параметре expires_in , возвращаемом Google OAuth. Если срок действия вашего токена доступа истек, используйте токен обновления, чтобы получить новый.

Выполните вызов POST к конечной точке OAuth Google, заменив:

  1. oauth2-client-id и oauth2-client-secret с идентификатором клиента OAuth2 и секретом клиента из ваших учетных данных Google Cloud.
  2. refresh-token с кодом, который вы получили при первоначальном получении токена доступа.

Google OAuth возвращает новый токен доступа.

Запрос

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Ответ

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}