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

В процессе авторизации 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 Для личного использования проверка API OAuth не требуется.

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

Для получения дополнительной информации см. экран "Непроверенное приложение" .

Недействительный клиент

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

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

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

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

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

Краткий справочник

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

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

1 PCM

Направьте 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"
}