Po utworzeniu projektów Google Cloud i Device Access możesz autoryzować konto Google za pomocą obsługiwanego urządzenia Google Nest na potrzeby interfejsu SDM API.
Połącz swoje konto
Aby wyświetlać struktury i urządzenia, musisz połączyć konto Google z projektem za pomocą PCM.Device Access PCM umożliwia przyznanie uprawnień do dostępu do danych struktury i urządzenia. user developer
W tym przewodniku pełnisz rolę zarówno user , jak i developer.
Otwórz ten link w przeglądarce, zastępując:
- project-id ze swoim Device Access Project ID
- oauth2-client-id identyfikatorem klienta OAuth2 z danych logowania 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 - Jeśli ostatnio logujesz się w Google na kilka kont, może się wyświetlić początkowy ekran Wybierz konto z listą Twoich kont Google. W takim przypadku wybierz konto Google powiązane z urządzeniami, które chcesz autoryzować Device Access.
- Ekran Uprawnienia w Google Nest to PCM. Tutaj możesz przyznać uprawnienia do struktury i urządzenia. Włącz uprawnienia do domu (krok 1) i wszystkich urządzeń w tym domu obsługiwanych przez SDM API (krok 2), a następnie kliknij Dalej.
- Na ekranie Wybierz konto, aby kontynuować w Nazwa projektu , gdzie Nazwa projektu to nazwa Twojego projektu Google Cloud, wybierz konto Google, które chcesz autoryzować na potrzeby SDM API. Użyj tego samego konta Google co wcześniej.
- Po wybraniu konta może się wyświetlić ekran ostrzeżenia Ta aplikacja nie została zweryfikowana przez Google. Jeśli tak się stanie, kliknij Zaawansowane, a potem Otwórz Nazwa projektu (niebezpieczne). Więcej informacji znajdziesz w artykule Ta aplikacja nie została zweryfikowana przez Google.
- Na ekranie Przyznaj uprawnienia do Nazwa projektu kliknij Zezwól, aby przyznać projektowi uprawnienia dostępu do Twojego konta Google.
- Na ekranie Potwierdź wybór sprawdź, czy uprawnienia, które chcesz przyznać, są zaznaczone, a następnie kliknij Zezwól , aby potwierdzić.
Powinna nastąpić przekierowanie na https://www.google.com. Kod autoryzacji jest zwracany jako parametr
codew adresie URL, który powinien mieć ten format:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Skopiuj kod autoryzacji.
Uzyskiwanie tokena dostępu
Użyj kodu autoryzacji, aby pobrać token dostępu, którego możesz używać do wywoływania SDM API.
Otwórz terminal i uruchom to następujące
curlpolecenie, zastępując:- oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
- authorization-code kodem otrzymanym w poprzednim kroku
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 zwraca 2 tokeny: token dostępu i token odświeżania.
Skopiuj obie te wartości. Token dostępu służy do wywoływania SDM API, a token odświeżania – do uzyskiwania nowego tokena dostępu.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Wywołanie listy urządzeń
Autoryzacja nie jest zakończona, dopóki nie wykonasz
pierwszego
devices.list
wywołania za pomocą nowego tokena dostępu. To
początkowe wywołanie kończy proces autoryzacji i włącza zdarzenia, jeśli
masz już skonfigurowaną subskrypcję Pub/Sub.
Użyj curl, aby wykonać to wywołanie w przypadku punktu końcowego devices:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'Wywołanie zakończone pomyślnie zwraca listę urządzeń połączonych z Twoim Device Access projektem. Każde urządzenie ma własną, unikalną listę dostępnych cech:
{
"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"
}
]
}
]
}Jak używać tokena odświeżania
Tokeny dostępu do SDM API są ważne tylko
przez godzinę, co jest podane w parametrze expires_in zwracanym przez Google OAuth. Jeśli
token dostępu wygaśnie, użyj tokena odświeżania, aby uzyskać nowy.
Polecenie jest podobne do polecenia tokena dostępu, z tym że używasz innego parametru grant_type.
Otwórz terminal i uruchom to polecenie
curl, zastępując:- oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
- refresh-token kodem otrzymanym podczas początkowego uzyskiwania dostępu tokena.
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 zwraca nowy token dostępu.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Rozwiązywanie problemów
Więcej informacji o Google OAuth znajdziesz w artykule Używanie OAuth 2.0 do korzystania z interfejsów API Google.
Token odświeżania ciągle wygasa
Tokeny odświeżania mogą przestać działać po 7 dniach, jeśli identyfikator klienta nie został zatwierdzony. 7-dniowe wygaśnięcie tokena nie jest związane z zatwierdzeniami komercyjnymi ani w piaskownicy. Aby uzyskać dłuższy okres ważności tokena, konto usługi lub użytkownika musi zostać zatwierdzone, a identyfikator klienta OAuth 2.0 musi zostać wdrożony w środowisku produkcyjnym. Więcej informacji znajdziesz w artykule Wygaśnięcie tokena odświeżania.
Odmowa dostępu
Jeśli skonfigurujesz ekran zgody OAuth w Google Cloud, a Typ użytkownika to Zewnętrzny, podczas próby połączenia konta z kontem Google, które nie jest wymienione jako użytkownik testowy Twojej aplikacji, pojawi się błąd „Odmowa dostępu”. Dodaj konto Google do sekcji Użytkownicy testowi na ekranie zgody OAuth.
Błąd Menedżera połączeń z partnerami (PCM)
Jeśli masz problem z dostępem do PCM, zapoznaj się z artykułem Menedżer połączeń z partnerami (PCM) informacje o błędach.
Ta aplikacja nie została zweryfikowana przez Google
SDM API używa ograniczonego zakresu, co oznacza, że wszystkie aplikacje, które używają tego zakresu podczas autoryzacji, będą "niezweryfikowane", dopóki nie zostanie ukończona weryfikacja interfejsu OAuth API. Jeśli używasz aplikacji Device Access na własny użytek, weryfikacja interfejsu OAuth API nie jest wymagana.
Podczas procesu autoryzacji
może się wyświetlić ekran „Ta aplikacja nie została zweryfikowana przez Google”, jeśli zakres sdm.service nie jest skonfigurowany na
ekranie zgody OAuth w Google Cloud. Ten ekran można pominąć, klikając Zaawansowane , a potem Otwórz Nazwa projektu (niebezpieczne).
Więcej informacji znajdziesz w artykule Ekran niezweryfikowanej aplikacji screen.
Nieprawidłowy klient
Podczas próby uzyskania tokena dostępu lub tokena odświeżania pojawi się błąd „Nieprawidłowy klient”, jeśli podasz nieprawidłowy tajny klucz klienta OAuth 2.0. Upewnij się, że wartość
client_secret używana w wywołaniach tokena dostępu i tokena odświeżania jest zgodna z wartością
identyfikatora klienta OAuth 2.0, która znajduje się na stronie
Dane logowania Google Cloud.
Nieprawidłowe żądanie, brak wymaganego zakresu
Po przyznaniu uprawnień w PCM może wystąpić błąd „Nieprawidłowe żądanie” z komunikatem „Brak wymaganego parametru: scope”. Upewnij się, że wartość
scope używana w wywołaniach autoryzacji jest taka sama jak wartość ustawiona dla klienta OAuth 2.0,
która znajduje się na stronie Dane logowania Google Cloud
page.
Niezgodność identyfikatora URI przekierowania
Podczas autoryzacji może wystąpić błąd „Niezgodność identyfikatora URI przekierowania”. Upewnij się, że wartość redirect_uri używana w wywołaniach autoryzacji jest
taka sama jak wartość ustawiona dla klienta OAuth 2.0, która znajduje się na stronie
Dane logowania Google Cloud.
Modyfikowanie uprawnień konta
Aby zmodyfikować uprawnienia przyznane projektowi Device Access lub całkowicie go odłączyć , otwórz PCM:
https://nestservices.google.com/partnerconnections
Na tej stronie wyświetlają się wszystkie usługi deweloperów innych firm (Device Access projekty) połączone z Twoim kontem. Wybierz projekt, który chcesz zmienić. Device Access Na następnym ekranie zmodyfikuj uprawnienia.
Aby cofnąć tylko określone uprawnienia autoryzowanej usługi, wyłącz uprawnienia, które chcesz cofnąć, i kliknij strzałkę wstecz, aby zapisać zmiany.
Aby całkowicie odłączyć autoryzowaną usługę, kliknij Odłącz konto Google , aby cofnąć wszystkie uprawnienia i tokeny dostępu przyznane projektowi na potrzeby konta.
Krótkie omówienie
Skorzystaj z tego omówienia, aby szybko wykonać czynności umożliwiające autoryzację user i połączenie konta Google .
Aby skorzystać z tego omówienia, zmień każdą zmienną zastępczą w przykładowych kodach na wartości dla konkretnej integracji, a następnie skopiuj i wklej w razie potrzeby:
1 PCM
Otwórz ten link w przeglądarce, zastępując:
- project-id ze swoim Device Access Project ID
- oauth2-client-id identyfikatorem klienta OAuth2 z danych logowania 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 Kod autoryzacji
Powinna nastąpić przekierowanie na
https://www.google.com. Kod autoryzacji jest zwracany jako parametr code w adresie URL,
który powinien mieć ten format:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 Token dostępu
Użyj kodu autoryzacji, aby pobrać token dostępu, którego możesz używać do wywoływania SDM API.
Otwórz terminal i uruchom
to następujące curl polecenie, zastępując:
- oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
- authorization-code kodem otrzymanym w poprzednim kroku
Google OAuth zwraca 2 tokeny: token dostępu i token odświeżania.
Żądanie
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' Odpowiedź
{
"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer"
}4 Wywołanie interfejsu API
Autoryzacja nie jest zakończona, dopóki nie wykonasz
pierwszego
devices.list
wywołania za pomocą nowego tokena dostępu. To
początkowe wywołanie kończy proces autoryzacji i włącza zdarzenia, jeśli
masz już skonfigurowaną subskrypcję Pub/Sub.
Aby zakończyć autoryzację, musisz użyć jednego z wywołań interfejsu API wymienionych w przypadku określonego zakresu.
sdm.service
urządzenia
Więcej informacji znajdziesz w dokumentacji interfejsu
devices.list
API.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'5 Token odświeżania
Tokeny dostępu do SDM API są ważne tylko
przez godzinę, co jest podane w parametrze expires_in zwracanym przez Google OAuth. Jeśli
token dostępu wygaśnie, użyj tokena odświeżania, aby uzyskać nowy.
Otwórz terminal i uruchom to
polecenie curl, zastępując:
- oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
- refresh-token kodem otrzymanym podczas początkowego uzyskiwania dostępu tokena.
Google OAuth zwraca nowy token dostępu.
Żądanie
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' Odpowiedź
{
"access_token": "new-access-token",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer"
}