Żądanie synchronizacji aktywuje żądanie SYNC
w Twojej realizacji dla dowolnego użytkownika Google
z urządzeniami, które:
Powiązano z nimi agentUserId
(które
wysłane w pierwotnym żądaniu SYNC). Dzięki temu możesz zaktualizować urządzenia
bez odłączania i ponownego łączenia kont. Wszyscy użytkownicy powiązani z tym kontem
otrzyma żądanie SYNC
.
Musisz wywołać żądanie SYNC
:
- Jeśli użytkownik doda nowe urządzenie
- Jeśli użytkownik usunie już używane urządzenie.
- Jeśli użytkownik zmieni nazwę istniejącego urządzenia.
- jeśli wdrożysz nowy typ lub nową cechę urządzenia albo dodasz nową funkcję;
Rozpocznij
Aby wdrożyć synchronizację żądań, wykonaj te czynności:
Włączanie interfejsu Google HomeGraph API
-
W Google Cloud Console otwórz stronę HomeGraph API.
Otwórz stronę interfejsu HomeGraph API - Wybierz projekt, który pasuje do identyfikatora projektu smart home.
- Kliknij WŁĄCZ.
Tworzenie klucza konta usługi
Aby wygenerować klucz konta usługi z Google Cloud Console, wykonaj te instrukcje:
-
W Google Cloud Console otwórz stronę Utwórz klucz konta usługi.
Otwórz stronę tworzenia klucza konta usługi - Na liście Konto usługi wybierz Nowe konto usługi.
- W polu Nazwa konta usługi wpisz nazwę.
- W polu Identyfikator konta usługi wpisz identyfikator.
Z listy Rola wybierz Konta usługi > Twórca tokenów konta usługi.
W polu Typ klucza wybierz opcję JSON.
- Kliknij Utwórz. Plik JSON zawierający klucz pobrane na komputer.
Wywoływanie interfejsu API
HTTP
Interfejs Home Graph API zapewnia punkt końcowy HTTP
- Użyj pobranego pliku JSON konta usługi, aby utworzyć plik JSON Web Token (JWT). Więcej informacji: Uwierzytelnianie przy użyciu konta usługi.
- Uzyskaj token dostępu OAuth 2.0 za pomocą
https://www.googleapis.com/auth/homegraph
zakres używa oauth2l: - Utwórz żądanie JSON za pomocą
agentUserId
. Oto przykładowe żądanie synchronizacji żądań w formacie JSON: - Połącz plik JSON żądania synchronizacji z tokenem w żądaniu HTTP POST
do punktu końcowego Google Home Graph. Oto przykład,
żądania w wierszu poleceń za pomocą polecenia
curl
jako test:
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 zapewnia punkt końcowy gRPC
- Pobierz definicję usługi buforów protokołów dla interfejsu Home Graph API.
- Postępuj zgodnie z dokumentacją dla programistów gRPC, aby wygenerować atrapy klienta w jednym z obsługiwanych języków.
- Wywołaj metodę RequestSync.
Node.js
Klient Node.js interfejsów API Google zapewnia powiązania dla interfejsu Home Graph API.
- Zainicjuj usługę
google.homegraph
przy użyciu domyślnych danych logowania aplikacji. - Wywołaj metodę
requestSync
za pomocą RequestSyncDevicesRequest. ZwracaPromise
z pustą odpowiedzią 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 for Java zawiera powiązania dla interfejsu Home Graph API.
- Zainicjuj
HomeGraphApiService
przy użyciu domyślnych danych logowania aplikacji. - Wywołaj metodę
requestSync
za pomocą funkcjiRequestSyncDevicesRequest
. Zwraca pustą wartość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 żądania synchronizacji może wystąpić jeden z poniższych błędów. Odpowiedzi te mają postać kodów stanu HTTP.
400 Bad Request
– serwer nie może przetworzyć żądanie wysłane przez klienta z powodu nieprawidłowej składni. Najczęstsze przyczyny zawierają nieprawidłowy plik JSON lub używasz atrybutunull
zamiast „” dla wartości ciągu.403 Forbidden
– serwer nie może przetworzyć pliku żądanie dotyczące danego elementuagentUserId
z powodu błędu w czasie odświeżając token. Sprawdzanie, czy punkt końcowy OAuth odpowiada aby odświeżyć żądania tokenów i sprawdzić połączenie kont użytkownika stanu.404 Not Found
– nie można uzyskać żądanego zasobu ale mogą być dostępne w przyszłości. Zwykle oznacza to, że konto użytkownika nie jest połączone z Google lub otrzymaliśmyagentUserId
Upewnij się, żeagentUserId
jest zgodny z wartością w polu odpowiedź SYNC i wszystko działa prawidłowo. z intencjami DISCONNECT.429 Too Many Requests
– maksymalna liczba równoczesnych synchronizacji dla danego elementuagentUserId
przekroczono limit żądań. Rozmówca może wysłać tylko jedno żądanie synchronizacji, chyba żeasync
flaga jest ustawiona na „true”.