Synchronizacja żądań wywołuje żądanie SYNC do Twojej usługi realizacji w przypadku każdego użytkownika Google
który ma urządzenia powiązane z określonym
agentUserId (wysłanym w pierajtnym żądaniu SYNC). Umożliwia to aktualizowanie urządzeń użytkowników bez odłączania i ponownego łączenia ich kont. Wszyscy użytkownicy powiązani z tym identyfikatorem otrzymają żądanie SYNC.
Musisz wywołać żądanie SYNC:
- gdy użytkownik doda nowe urządzenie,
- gdy użytkownik usunie istniejące urządzenie,
- gdy użytkownik zmieni nazwę istniejącego urządzenia,
- gdy zaimplementujesz nowy typ urządzenia, cechę lub dodasz nową funkcję urządzenia.
Rozpocznij
Aby zaimplementować synchronizację żądań:
Włączanie interfejsu Google HomeGraph API
-
W Google Cloud Console otwórz stronę HomeGraph API.
Otwórz stronę HomeGraph API - Wybierz projekt, który odpowiada identyfikatorowi projektu smart home.
- Kliknij WŁĄCZ.
Tworzenie klucza konta usługi
Aby wygenerować klucz konta usługi z Google Cloud Console:
-
W Google Cloud Console otwórz stronę Konta usługi.
Otwórz stronę Konta usługi.Zanim przejdziesz na stronę Konta usługi, może być konieczne wybranie projektu.
Kliknij Utwórz konto usługi.
W polu Nazwa konta usługi wpisz nazwę.
W polu Identyfikator konta usługi wpisz identyfikator.
W polu Opis konta usługi wpisz opis.
Kliknij Utwórz i kontynuuj.
W menu Rola wybierz Konta usługi > Twórca tokenów tożsamości OpenID Connect konta usługi.
Kliknij Dalej.
Kliknij Gotowe.
Na liście kont usługi wybierz utworzone konto usługi i wybierz Zarządzaj kluczami z menu Działania.
Kliknij Dodaj klucz > Utwórz nowy klucz.
W polu Typ klucza wybierz opcję JSON.
Kliknij Utwórz. Na komputer zostanie pobrany plik JSON zawierający klucz.
Wywoływanie interfejsu API
HTTP
Interfejs Home Graph API udostępnia punkt końcowy HTTP.
- Użyj pobranego pliku JSON konta usługi, aby utworzyć token internetowy JSON Token (JWT). Więcej informacji znajdziesz w artykule Uwierzytelnianie za pomocą konta usługi.
- Uzyskaj token dostępu OAuth 2.0 z
https://www.googleapis.com/auth/homegraphzakresem za pomocą oauth2l: - Utwórz żądanie JSON z identyfikatorem
agentUserId. Oto przykładowe żądanie JSON dotyczące synchronizacji żądań: - Połącz żądanie JSON synchronizacji żądań i token w żądaniu HTTP POST
request do punktu końcowego Google Home Graph. Oto przykład, jak
wysłać żądanie w wierszu poleceń za pomocą
curlna potrzeby testu:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "user-123" }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:requestSync"
gRPC
Interfejs Home Graph API udostępnia punkt końcowy gRPC.
- Pobierz definicję usługi buforów protokołu dla interfejsu Home Graph API.
- Postępuj zgodnie z dokumentacją dla deweloperów gRPC, aby wygenerować stuby klienta w jednym z obsługiwanych języków.
- Wywołaj metodę RequestSync.
Node.js
Biblioteka klienta interfejsów Google API dla Node.js udostępnia powiązania z interfejsem Home Graph API.
- Zainicjuj usługę
google.homegraphza pomocą domyślnego uwierzytelniania aplikacji. - Wywołaj metodę
requestSyncza pomocą RequestSyncDevicesRequest. Zwraca onaPromisez pustą RequestSyncDevicesResponse.
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.requestSync({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', async: false } });
Java
Biblioteka klienta interfejsu HomeGraph API dla języka Java udostępnia powiązania z interfejsem Home Graph API.
- Zainicjuj
HomeGraphApiServiceza pomocą domyślnych uwierzytelnień aplikacji. - Wywołaj metodę
requestSyncza pomocąRequestSyncDevicesRequest. Zwraca ona pustąReportStateAndNotificationResponse.
// Get Application Default credentials. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(List.of("https://www.googleapis.com/auth/homegraph")); // Create Home Graph service client. HomeGraphService homegraphService = new HomeGraphService.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("HomeGraphExample/1.0") .build(); // Request sync. RequestSyncDevicesRequest request = new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false); homegraphService.devices().requestSync(request);
Odpowiedzi na błędy
Podczas wywoływania synchronizacji żądań możesz otrzymać jedną z tych odpowiedzi na błędy. Te odpowiedzi mają postać kodów stanu HTTP.
400 Bad Request– serwer nie mógł przetworzyć żądania wysłanego przez klienta z powodu nieprawidłowej składni. Typowe przyczyny to nieprawidłowy format JSON lub użycie wartościnullzamiast "" w przypadku wartości ciągu znaków.403 Forbidden– serwer nie mógł przetworzyć żądania dla danegoagentUserIdz powodu błędu podczas odświeżania tokena. Upewnij się, że punkt końcowy protokołu OAuth prawidłowo odpowiada na żądania tokena odświeżania, i sprawdź stan połączenia konta użytkownika.404 Not Found– nie udało się znaleźć żądanego zasobu, ale może on być dostępny w przyszłości. Zwykle oznacza to, że konto użytkownika nie jest połączone z Google lub że otrzymaliśmy nieprawidłowy identyfikatoragentUserId. Upewnij się, że identyfikatoragentUserIdjest zgodny z wartością podaną w Twojej odpowiedzi SYNC i że prawidłowo obsługujesz intencje DISCONNECT.429 Too Many Requests– przekroczono maksymalną liczbę równoczesnych żądań synchronizacji dla danegoagentUserId. Wywołujący może wysłać tylko 1 równoczesne żądanie synchronizacji, chyba że flagaasyncjest ustawiona na true.