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

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

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

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

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

Токены обновления могут перестать работать через 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 .

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

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

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

При авторизации вы можете столкнуться с ошибкой «Redirect URI mismatch» (Несоответствие 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 для указанной области.

sdm.service

устройства

Более подробную информацию см. в справочнике 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"
}