После создания проектов Google Cloud и Device Access вы можете авторизовать учетную запись Google с помощью поддерживаемого устройства Google Nest для доступа к API SDM.
Привяжите свой аккаунт
Для просмотра сооружений и устройств необходимо связать учетную запись Google со своим аккаунтом.Device Access проект с использованием PCM. PCM позволяет user предоставить разрешение разрешить developerдля доступа к своим структурам и данным устройства.
В этом руководстве вы выступаете в роли одновременно и... user и developer.
Откройте следующую ссылку в веб-браузере, заменив:
- project-id с вашим Device Access Project ИДЕНТИФИКАТОР
- oauth2-client-id с идентификатором клиента OAuth2 из ваших учетных данных Google Cloud.
https://nestservices.google.com/partnerconnections/project-id/auth?
redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service - Если вы недавно входили в Google с несколькими учетными записями, вам может быть показан начальный экран «Выберите учетную запись» со списком ваших учетных записей Google. В этом случае выберите учетную запись Google, привязанную к устройству (устройствам), для которого (которых) вы хотите авторизовать доступ. Device Access.
- Экран разрешений Google Nest — это сам PCM. Здесь вы можете предоставить разрешения для структуры и устройств. Включите разрешения для вашего дома (Шаг 1) и для всех устройств в этом доме, которые поддерживаются API SDM (Шаг 2), затем нажмите «Далее» .
- На экране «Выберите учетную запись для перехода к названию проекта» , где «Название проекта» — это название вашего проекта Google Cloud, выберите учетную запись Google, которую вы хотите авторизовать для API SDM. Используйте ту же учетную запись Google, что и раньше.
- После выбора учетной записи может появиться предупреждение о том, что Google не подтвердил это приложение . В этом случае, чтобы продолжить, нажмите « Дополнительно », а затем « Перейти к названию проекта (небезопасно)» . Дополнительную информацию см. в разделе «Google не подтвердил это приложение» .
- На экране разрешения «Название грантового проекта» нажмите «Разрешить» , чтобы предоставить проекту разрешение на доступ к вашей учетной записи Google.
- На экране «Подтвердите свой выбор» убедитесь, что отмечены разрешения, которые вы хотите предоставить, и нажмите «Разрешить» для подтверждения.
Вас должно перенаправить на https://www.google.com. Код авторизации возвращается в качестве параметра
codeв URL-адресе и должен иметь следующий формат:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Скопируйте код авторизации.
Получите токен доступа
Используйте код авторизации для получения токена доступа, который вы можете использовать для вызова API SDM.
Откройте терминал и выполните следующую команду
curl, заменив:- oauth2-client-id и oauth2-client-secret с идентификатором клиента OAuth2 и секретным ключом клиента из ваших учетных данных Google Cloud.
- authorization-code с кодом, полученным на предыдущем шаге
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=https://www.google.com' Сервис Google OAuth возвращает два токена: токен доступа и токен обновления.
Скопируйте оба этих значения. Токен доступа используется для вызова API SDM, а токен обновления — для получения нового токена доступа.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Выполните вызов для получения списка устройств.
Авторизация не будет завершена, пока вы не выполните первый вызов devices.list с вашим новым токеном доступа. Этот первоначальный вызов завершает процесс авторизации и активирует события, если вы уже настроили подписку Pub/Sub.
Для вызова конечной точки devices используйте curl :
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'В случае успешного выполнения запроса возвращается список устройств, связанных с вашим устройством. Device Accessпроект. Каждое устройство имеет свой уникальный список доступных характеристик:
{
"devices": [
{
"name": "enterprises/project-id/devices/device-id",
"type": "sdm.devices.types.device-type",
"traits": { ... },
"parentRelations": [
{
"parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
"displayName": "device-room-name"
}
]
}
]
}Как использовать токен обновления
Токены доступа к API SDM действительны только в течение 1 часа, как указано в параметре expires_in , возвращаемом Google OAuth. Если срок действия вашего токена доступа истек, используйте токен обновления, чтобы получить новый.
Эта команда аналогична команде для токена доступа, за исключением того, что используется другой grant_type .
Откройте терминал и выполните следующую команду
curl, заменив:- oauth2-client-id и oauth2-client-secret с идентификатором клиента OAuth2 и секретным ключом клиента из ваших учетных данных Google Cloud.
- refresh-token с кодом, который вы получили при первоначальном получении токена доступа.
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' Сервис Google OAuth возвращает новый токен доступа.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Поиск неисправностей
Чтобы узнать больше о 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 .
Изменить права доступа к учетной записи
Изменить предоставленные права доступа Device Access или полностью отключить проект, перейдите в PCM:
https://nestservices.google.com/partnerconnections
На этой странице отображаются все сервисы сторонних разработчиков (Device Access проекты), связанные с вашей учетной записью. Выберите Device Access Проект, который вы хотите изменить. Используйте следующий экран, чтобы изменить права доступа по своему усмотрению.
Чтобы отозвать только определенные разрешения для авторизованной службы , выберите разрешения, которые хотите отозвать, и нажмите стрелку «Назад», чтобы сохранить изменения.
Чтобы полностью отключить авторизованный сервис , нажмите «Отвязать свою учетную запись Google» , чтобы отозвать все разрешения и токены доступа, предоставленные проекту для этой учетной записи.
Если PCM не отображает нужную услугу, возможно, сначала потребуется запросить список устройств .
Краткий справочник
Используйте это справочное руководство, чтобы быстро выполнить шаги по авторизации.user и связать их учетную запись Google.
Для быстрого доступа к этому справочнику отредактируйте каждую переменную-заполнитель в примерах кода, указав значения для вашей конкретной интеграции, и скопируйте и вставьте их по мере необходимости:
1 PCM
Откройте следующую ссылку в веб-браузере, заменив:
- project-id с вашим Device Access Project ИДЕНТИФИКАТОР
- oauth2-client-id с идентификатором клиента OAuth2 из ваших учетных данных Google Cloud.
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service
2 Код авторизации
Вас должно перенаправить на https://www.google.com. Код авторизации возвращается в качестве параметра code в URL-адресе и должен иметь следующий формат:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 токена доступа
Используйте код авторизации для получения токена доступа, который вы можете использовать для вызова API SDM.
Откройте терминал и выполните следующую команду curl , заменив:
- oauth2-client-id и oauth2-client-secret с идентификатором клиента OAuth2 и секретным ключом клиента из ваших учетных данных Google Cloud.
- authorization-code с кодом, полученным на предыдущем шаге
Сервис 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=https://www.google.com' Ответ
{
"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer"
}4 вызова API
Авторизация не будет завершена, пока вы не выполните первый вызов devices.list с вашим новым токеном доступа. Этот первоначальный вызов завершает процесс авторизации и активирует события, если вы уже настроили подписку Pub/Sub.
Для завершения авторизации необходимо использовать один из вызовов 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. Если срок действия вашего токена доступа истек, используйте токен обновления, чтобы получить новый.
Откройте терминал и выполните следующую команду curl , заменив:
- oauth2-client-id и oauth2-client-secret с идентификатором клиента OAuth2 и секретным ключом клиента из ваших учетных данных Google Cloud.
- 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/sdm.service",
"token_type": "Bearer"
}