Po utworzeniu projektów Google Cloud i dostępu do urządzenia możesz może autoryzować konto Google na obsługiwanym urządzeniu Google Nest na potrzeby SDM API.
Połącz swoje konto
Aby wyświetlać domy i urządzenia, musisz połączyć konto Google ze swoim Device Access za pomocą PCM. PCM umożliwia user przyznanie uprawnień pozwala developerna dostęp do swoich struktur i danych z urządzenia.
W tym przewodniku jesteś zarówno user , jak i developer.
Otwórz ten link w przeglądarce przeglądarki, zastępując:
- project-id za pomocą dokumentu tożsamości Device Access Project
- oauth2-client-id za pomocą identyfikatora klienta OAuth2 z Twojego Google Cloud Dane logowania
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 logowałeś się w Google na kilka kont, być może wyświetli się początkowy ekran Wybierz konto z listą Konta Google. Jeśli tak, wybierz konto Google powiązane z urządzeniami, aby upoważnić usługę Device Access.
- Ekran Uprawnienia Google Nest to sam PCM. Tutaj możesz przyznać uprawnienia dotyczące domu i urządzenia. Włącz dostępu do domu (krok 1) i wszystkich urządzeń w domu, które obsługiwane przez interfejs SDM API (krok 2) i kliknij Dalej.
- Na ekranie Wybierz konto, aby przejść do Nazwa projektu, gdzie Nazwa projektu to nazwa Twojego projektu Google Cloud, wybierz koncie Google, które chcesz autoryzować w zakresie SDM API. Użyj tego samego konta Google co wcześniej.
- Po wybraniu konta może wyświetlić się ekran z ostrzeżeniem z informacją, Ta aplikacja nie została zweryfikowana przez Google. Jeśli tak, aby kontynuować, kliknij Zaawansowane i kliknij Otwórz nazwę projektu (niebezpieczna). Zobacz Ta aplikacja nie została zweryfikowana przez Google i informacjami o nich.
- Na ekranie Przyznaj uprawnienia Nazwa projektu kliknij Zezwól, aby przyznać uprawnienia dostępu projektu do Twojego konta Google.
- Na ekranie Potwierdź wybrane opcje upewnij się, że chcesz przyznać odpowiednie uprawnienia. do przyznania dostępu, i kliknij Zezwól, aby potwierdzić.
Powinno nastąpić przekierowanie do https://www.google.com. Kod autoryzacji jest zwracany jako parametr
code
w adresie URL, który powinien mieć następujący 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, by pobrać token dostępu – za pomocą których można wywoływać interfejs SDM API.
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 Google Cloud Dane logowania
- authorization-code za pomocą kodu otrzymanego 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' Protokół Google OAuth zwraca dwa tokeny: token dostępu oraz token odświeżania.
{
Skopiuj obie te wartości. Token dostępu służy do wywoływania funkcji SDM API i token odświeżania są używane do uzyskania nowego token dostępu.
Zadzwoń do listy urządzeń
Autoryzacja nie będzie ukończona do momentu
Twój pierwszy
devices.list
za pomocą nowego tokena dostępu. Ten
pierwsze wywołanie kończy proces autoryzacji i włącza zdarzenia, jeśli
masz już skonfigurowaną subskrypcję Pub/Sub.
Użyj narzędzia curl
, aby wywołać to wywołanie dla 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'
Udane połączenie zwraca listę urządzeń połączonych z Twoim urządzeniem Device Access w projektach AI. 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 interfejsu SDM API są tylko
ważne przez 1 godzinę, zgodnie z parametrem expires_in
zwróconym przez Google OAuth. Jeśli
token dostępu wygaśnie, użyj tokena odświeżania, aby uzyskać nowy.
Polecenie jest podobne do tego tokena dostępu, z tą różnicą, że używasz innego
grant_type
Otwórz terminal i uruchom następujące polecenie
curl
, zastępując:- oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z Google Cloud Dane logowania
- refresh-token kodem otrzymanym podczas uzyskiwania dostępu 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 zwraca nowy token dostępu.
{
Rozwiązywanie problemów
Więcej informacji o Google OAuth znajdziesz w artykule Korzystanie z OAuth 2.0 na potrzeby dostępu do Google interfejsów API.
Token odświeżania wkrótce straci ważność
Tokeny odświeżania mogą przestać działać po 7 dniach, jeśli identyfikator klienta nie zostanie zatwierdzony jedną z możliwych przyczyn. Wygaśnięcie 7-dniowego okresu nie ma związku z komercyjnymi tokenami i zatwierdzanie w trybie piaskownicy. Usługa lub konto użytkownika musi uzyskać dostęp do protokołu OAuth Aby zwiększyć żywotność tokenów, identyfikator klienta w wersji 2.0 został zatwierdzony i uruchomiony w środowisku produkcyjnym. Więcej informacji znajdziesz w artykule Odświeżanie okresu ważności tokena. i informacjami o nich.
Odmowa dostępu
Jeśli masz skonfigurowany ekran akceptacji OAuth w Google Cloud i Typ użytkownika to Zewnętrzny, wyświetli się „Odmowa dostępu”. jeśli próba połączenia z kontem Google, które nie jest wymienione jako użytkownik testowy. dla Twojej aplikacji. Pamiętaj, aby w sekcji Użytkownicy testowi dodać konto Google na ekranie zgody OAuth.
Błąd menedżera połączeń z partnerami (PCM)
Pomoc dotycząca błędów napotkanych podczas uzyskiwania dostępu PCM, zobacz Menedżer ds. połączeń z partnerami (PCM) Dokumentacja błędu.
Ta aplikacja nie została zweryfikowana przez Google
SDM API używa zakresu z ograniczeniami, co oznacza, że każdy aplikacje, które używają tego zakresu podczas autoryzacji, zostaną „niezweryfikowane” chyba że Zakończono weryfikację interfejsu OAuth API. Jeśli używasz Device Access na potrzeby: do użytku osobistego, weryfikacja OAuth API nie jest wymagana.
Możesz zobaczyć komunikat „Ta aplikacja nie została zweryfikowana przez Google” podczas autoryzacji.
procesu, który pojawia się, jeśli zakres sdm.service
nie jest skonfigurowany
ekran zgody OAuth w Google Cloud. Ten ekran może być
pominięto, klikając opcję Zaawansowane, a następnie klikając Przejdź do Projektu
Nazwa (niebezpieczna).
Zobacz Niezweryfikowana aplikacja Ekran .
Nieprawidłowy klient
Gdy próbujesz uzyskać token dostępu lub odświeżenia, wyświetli się komunikat o nieprawidłowym
klient” jeśli podasz nieprawidłowy tajny klucz klienta OAuth 2.0. Upewnij się, że parametr
Wartość client_secret
, której używasz w wywołaniach tokena dostępu i odświeżania, jest tą wartością
dla używanego identyfikatora klienta OAuth 2.0, zgodnie z
Google Cloud
Dane logowania
stronę.
Nieprawidłowe żądanie, brak wymaganego zakresu
Po przyznaniu uprawnień w PCM możesz napotkać
„Nieprawidłowe żądanie” „Brak wymaganego parametru: zakres”. Upewnij się, że parametr
Wartość parametru scope
, której używasz w wywołaniach autoryzacji, jest taka sama jak wartość ustawiona dla klienta OAuth 2.0
zgodnie z danymi ze środowiska Google Cloud
Dane logowania
stronę.
Niezgodny identyfikator URI przekierowania
Podczas autoryzacji może pojawić się komunikat „Niezgodność identyfikatora URI przekierowania”.
. Upewnij się, że wartość redirect_uri
, której używasz w wywołaniach autoryzacji, to
taki sam jak ustawiony dla klienta OAuth 2.0, zgodnie z
Google Cloud
Dane logowania
stronę.
Modyfikowanie uprawnień konta
Aby zmienić uprawnienia przyznane do Device Access projektu lub odłączyć go przejdź do PCM:
https://nestservices.google.com/partnerconnections
Na tej stronie wyświetlane są wszystkie usługi deweloperskie innych firm (Device Access projekty) połączone z Twoim kontem. Wybierz Device Access projekt, który chcesz . Na następnym ekranie zmień uprawnienia według potrzeb.
Aby unieważnić tylko określone uprawnienia dla autoryzowanej usługi, przełącz uprawnienia, które chcesz cofnąć, i kliknij strzałkę wstecz, aby je zapisać.
Aby całkowicie odłączyć autoryzowaną usługę, kliknij Odłącz konto Google Account (Konto), aby unieważnić wszystkie uprawnienia i tokeny dostępu przypisane do projektu. przyznanych na koncie.
Jeśli PCM nie wyświetla żądanej usługi, może być konieczne wywołaj najpierw listę urządzeń.
Krótkie omówienie
Skorzystaj z tych informacji, aby szybko wdrożyć kroki autoryzacji user i połącz swoje konto Google ,
Aby skorzystać z tego krótkiego materiału, zmodyfikuj każdą zmienną zastępczą w przykładowym kodzie z wartościami dotyczącymi konkretnej integracji, a następnie skopiuj i wklej:
1 PCM
Otwórz ten link w przeglądarce przeglądarki, zastępując:
- project-id za pomocą dokumentu tożsamości Device Access Project
- oauth2-client-id za pomocą identyfikatora klienta OAuth2 z Twojego Google Cloud Dane logowania
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
Powinno nastąpić przekierowanie do
https://www.google.com. Kod autoryzacji jest zwracany jako parametr code
w adresie URL,
który powinien mieć następujący format:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 token dostępu
Użyj kodu autoryzacji, by pobrać token dostępu – za pomocą których można wywoływać interfejs SDM API.
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 Google Cloud Dane logowania
- authorization-code za pomocą kodu otrzymanego w poprzednim kroku
Protokół Google OAuth zwraca dwa tokeny: token dostępu oraz 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" }
Wywołanie interfejsu API 4
Autoryzacja nie będzie ukończona do momentu
Twój pierwszy
devices.list
za pomocą nowego tokena dostępu. Ten
pierwsze wywołanie kończy proces autoryzacji i włącza zdarzenia, jeśli
masz już skonfigurowaną subskrypcję Pub/Sub.
Musisz użyć jednej z Lista wywołań interfejsu API w określonym zakresie w celu ukończenia autoryzacji.
sdm.service
urządzenia
Zobacz
devices.list
Więcej informacji znajdziesz w dokumentacji interfejsu 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 interfejsu SDM API są tylko
ważne przez 1 godzinę, zgodnie z parametrem expires_in
zwróconym przez Google OAuth. Jeśli
token dostępu wygaśnie, użyj tokena odświeżania, aby uzyskać nowy.
Otwórz terminal i uruchom
następujące polecenie curl
, zastępując:
- oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z Google Cloud Dane logowania
- refresh-token kodem otrzymanym podczas uzyskiwania dostępu token.
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" }