Autoryzowanie konta

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.

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.

  1. Otwórz ten link w przeglądarce przeglądarki, zastępując:

    1. project-id za pomocą dokumentu tożsamości Device Access Project
    2. 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. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Na ekranie Przyznaj uprawnienia Nazwa projektu kliknij Zezwól, aby przyznać uprawnienia dostępu projektu do Twojego konta Google.
  7. Na ekranie Potwierdź wybrane opcje upewnij się, że chcesz przyznać odpowiednie uprawnienia. do przyznania dostępu, i kliknij Zezwól, aby potwierdzić.
  8. 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
    
  9. 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.

  1. Otwórz terminal i uruchom to polecenie curl, zastępując:

    1. oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z Google Cloud Dane logowania
    2. 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'
    
  2. Protokół Google OAuth zwraca dwa tokeny: token dostępu oraz token odświeżania.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    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

  1. Otwórz terminal i uruchom następujące polecenie curl, zastępując:

    1. oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z Google Cloud Dane logowania
    2. 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'
    
  2. 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 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:

  1. project-id za pomocą dokumentu tożsamości Device Access Project
  2. 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:

  1. oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z Google Cloud Dane logowania
  2. 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:

  1. oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z Google Cloud Dane logowania
  2. 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"
}