Autoryzowanie konta

Po utworzeniu projektów dotyczących Google Cloud i dostępu do urządzenia możesz autoryzować konto Google powiązane z obsługiwanym urządzeniem Google Nest, które będzie obsługiwało interfejs SDM API.

Aby wyświetlić struktury i urządzenia, musisz połączyć konto Google z projektemDevice Access za pomocą PCM. PCM zezwala systemom user na udzielanie uprawnień developerna dostęp do ich struktur i danych urządzenia.

W tym przewodniku pełnisz zarówno rolę user , jak i developer.

  1. W przeglądarce otwórz ten link, zastępując fragment:

    1. project-id za pomocą Device Access Project dokumentu tożsamości
    2. oauth2-client-id z 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. Jeśli ostatnio logowałeś się na kilka kont Google, może pojawić się początkowy ekran Wybierz konto z listą swoich kont Google. Jeśli tak, wybierz konto Google powiązane z urządzeniami, na których chcesz zezwolić na korzystanie z aplikacji Device Access.
  3. Ekran Uprawnienia Google Nest to PCM. Tutaj możesz przyznawać uprawnienia do struktury i urządzenia. Włącz uprawnienia domu (krok 1) i wszystkich urządzeń w domu, które są obsługiwane przez interfejs SDM API (krok 2), a potem kliknij Dalej.
  4. Na ekranie Wybierz konto, aby przejść do Nazwa projektu, gdzie Nazwa projektu to nazwa Twojego projektu Google Cloud, wybierz konto Google, które chcesz autoryzować na potrzeby interfejsu SDM API. Użyj tego samego konta Google co wcześniej.
  5. Po wybraniu konta może pojawić się ekran z ostrzeżeniem: Ta aplikacja nie została zweryfikowana przez Google. Jeśli tak, aby kontynuować, kliknij opcję Zaawansowane, a następnie Otwórz stronę Nazwa projektu (niebezpieczny). Więcej informacji znajdziesz w sekcji Ta aplikacja nie została zweryfikowana przez Google.
  6. Na ekranie Przyznaj projektowi uprawnienia do nazwy projektu kliknij Zezwól, aby przyznać projektowi uprawnienia dostępu do konta Google.
  7. Na ekranie Potwierdź wybrane opcje sprawdź, czy uprawnienia, które chcesz przyznać, są zaznaczone, i kliknij Zezwól, aby je potwierdzić.
  8. Powinno nastąpić przekierowanie na stronę https://www.google.com. Kod autoryzacji jest zwracany w adresie URL jako parametr code, 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, aby pobrać token dostępu, za pomocą którego możesz wywołać interfejs SDM API.

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

    1. oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
    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. Google OAuth zwraca 2 tokeny – token dostępu i 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 interfejsu SDM API, a token odświeżania służy do uzyskania nowego tokena dostępu.

Zadzwoń na listę urządzeń

Autoryzacja nie zostanie ukończona, dopóki nie wykonasz pierwszego wywołania devices.list z użyciem nowego tokena dostępu. To wstępne wywołanie kończy proces autoryzacji i włącza zdarzenia, jeśli masz już skonfigurowaną subskrypcję Pub/Sub.

Użyj metody curl, aby wywołać to wywołanie 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'

Pomyślne wywołanie zwraca listę urządzeń połączonych z Twoim projektem Device Access. 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 korzystać z tokena odświeżania

Tokeny dostępu do interfejsu SDM API są ważne tylko przez 1 godzinę, zgodnie z parametrem 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 tokena dostępu pierwszego z tą różnicą, że używasz innego tokena grant_type.

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

    1. oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
    2. refresh-token za pomocą kodu otrzymanego przy początkowym pobieraniu tokena dostępu.
    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 o używaniu OAuth 2.0 do uzyskiwania dostępu do interfejsów API Google.

Token odświeżania wciąż traci ważność

Jeśli identyfikator klienta nie zostanie zatwierdzony, tokeny odświeżania mogą przestać działać po 7 dniach. 7-dniowy okres ważności tokena nie jest związany z zatwierdzaniem wersji komercyjnych ani piaskownicy. Aby wydłużyć okres ważności tokenów, identyfikator klienta OAuth 2.0 musi zostać zatwierdzony i wprowadzony w środowisku produkcyjnym usługi lub konta użytkownika. Więcej informacji znajdziesz w sekcji Wygaśnięcie tokena odświeżania.

Odmowa dostępu

Jeśli masz w Google Cloud skonfigurowany ekran zgody OAuth, a Typ użytkownika to Zewnętrzny, przy próbie połączenia konta z kontem Google, które nie jest wymienione jako użytkownik testowy aplikacji, dodaj to konto do sekcji Użytkownicy testowi na ekranie zgody OAuth.

Błąd Menedżera połączeń z partnerami (PCM)

Pomoc dotyczącą błędów, które mogą wystąpić podczas uzyskiwania dostępu do PCM, znajdziesz w dokumentacji błędów Menedżera połączeń z partnerami (PCM).

Ta aplikacja nie została zweryfikowana przez Google

Interfejs SDM API używa zakresu z ograniczeniami, co oznacza, że wszystkie aplikacje używające tego zakresu podczas autoryzacji będą „niezweryfikowane”, dopóki nie zakończy się weryfikacja interfejsu OAuth API. Jeśli używasz Device Access do użytku osobistego, weryfikacja OAuth API nie jest wymagana.

Podczas procesu autoryzacji możesz zobaczyć ekran „Ta aplikacja nie została zweryfikowana przez Google”, który pojawia się, jeśli zakres sdm.service nie jest skonfigurowany na ekranie zgody OAuth w Google Cloud. Aby pominąć ten ekran, kliknij opcję Advanced (Zaawansowane), a następnie Go to Project Name (unsafe) (Otwórz stronę z nazwą projektu).

Więcej informacji znajdziesz w sekcji Ekran niezweryfikowanej aplikacji.

Nieprawidłowy klient

Próba uzyskania dostępu lub tokena odświeżania spowoduje pojawienie się błędu „Nieprawidłowy klient”, jeśli podasz nieprawidłowy tajny klucz klienta OAuth 2.0. Upewnij się, że wartość client_secret, której używasz w wywołaniach tokena dostępu i odświeżania, jest zgodna z identyfikatorem klienta OAuth 2.0, który znajdziesz na stronie Dane logowania Google Cloud.

Nieprawidłowe żądanie, brak wymaganego zakresu

Po przyznaniu uprawnień w PCM możesz zobaczyć błąd „Nieprawidłowe żądanie” „Brak wymaganego parametru: zakres”. Upewnij się, że wartość scope używana w wywołaniach autoryzacji jest taka sama jak wartość ustawiona dla klienta OAuth 2.0, podana na stronie Dane logowania do Google Cloud.

Niezgodność identyfikatora URI przekierowania

Podczas autoryzacji możesz zobaczyć 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órą znajdziesz na stronie Dane logowania do Google Cloud.

Modyfikowanie uprawnień konta

Aby zmodyfikować uprawnienia przyznane Device Access projektowi lub całkowicie go odłączyć, otwórz PCM:

https://nestservices.google.com/partnerconnections

Na tej stronie zobaczysz wszystkie zewnętrzne usługi dla deweloperów (Device Access projekty) połączone z Twoim kontem. Wybierz Device Access projekt, który chcesz zmienić. Na następnym ekranie możesz zmodyfikować uprawnienia zgodnie z potrzebami.

Aby unieważnić tylko określone uprawnienia dla danej usługi, przełącz je i kliknij strzałkę wstecz, aby je zapisać.

Jeśli chcesz całkowicie odłączyć autoryzowaną usługę, kliknij Odłącz swoje konto Google, co spowoduje unieważnienie wszystkich uprawnień i tokenów dostępu do konta przypisanych przez projekt.

Jeśli PCM nie pokazuje żądanej usługi, być może trzeba będzie najpierw wywołać listę urządzeń.

Krótki opis

Skorzystaj z tego dokumentu, aby szybko wdrożyć czynności potrzebne do autoryzacjiuser i połączenia konta Google.

Aby skorzystać z tego krótkiego przewodnika, edytuj każdą zmienną zastępczą w przykładowym kodzie, podając wartości odpowiednie dla Twojej integracji, a potem skopiuj i wklej je w razie potrzeby:

1 PCM

W przeglądarce otwórz ten link, zastępując fragment:

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

Powinno nastąpić przekierowanie na stronę https://www.google.com. Kod autoryzacji jest zwracany w adresie URL jako parametr code, 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, aby pobrać token dostępu, za pomocą którego możesz wywołać interfejs SDM API.

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

  1. oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
  2. authorization-code za pomocą kodu otrzymanego w poprzednim kroku

Google OAuth zwraca 2 tokeny – token dostępu i token odświeżania.

Prośba

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 zostanie ukończona, dopóki nie wykonasz pierwszego wywołania devices.list z użyciem nowego tokena dostępu. To wstępne wywołanie kończy proces autoryzacji i włącza zdarzenia, jeśli masz już skonfigurowaną subskrypcję Pub/Sub.

Aby ukończyć autoryzację, musisz użyć jednego z podanych wywołań interfejsu API dla określonego zakresu.

sdm.service

urządzenia

Więcej informacji znajdziesz w dokumentacji interfejsu 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 Token odświeżania

Tokeny dostępu do interfejsu SDM API są ważne tylko przez 1 godzinę, zgodnie z parametrem 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:

  1. oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
  2. refresh-token za pomocą kodu otrzymanego przy początkowym pobieraniu tokena dostępu.

Google OAuth zwraca nowy token dostępu.

Prośba

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"
}