Poproś o synchronizację

Żą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

  1. W Google Cloud Console otwórz stronę HomeGraph API.

    Otwórz stronę interfejsu HomeGraph API
  2. Wybierz projekt, który pasuje do identyfikatora projektu smart home.
  3. Kliknij WŁĄCZ.

Tworzenie klucza konta usługi

Aby wygenerować klucz konta usługi z Google Cloud Console, wykonaj te instrukcje:

Uwaga: upewnij się, że podczas wykonywania zadań korzystasz z właściwego projektu GCP. te czynności. To jest projekt, który pasuje do identyfikatora projektu smart home.
  1. W Google Cloud Console otwórz stronę Utwórz klucz konta usługi.

    Otwórz stronę tworzenia klucza konta usługi
  2. Na liście Konto usługi wybierz Nowe konto usługi.
  3. W polu Nazwa konta usługi wpisz nazwę.
  4. W polu Identyfikator konta usługi wpisz identyfikator.
  5. Z listy Rola wybierz Konta usługi > Twórca tokenów konta usługi.

  6. W polu Typ klucza wybierz opcję JSON.

  7. 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

  1. 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.
  2. Uzyskaj token dostępu OAuth 2.0 za pomocą https://www.googleapis.com/auth/homegraph zakres używa oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. Utwórz żądanie JSON za pomocą agentUserId. Oto przykładowe żądanie synchronizacji żądań w formacie JSON:
  5. {
      "agentUserId": "user-123"
    }
    
  6. 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:
  7. 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

  1. Pobierz definicję usługi buforów protokołów dla interfejsu Home Graph API.
  2. Postępuj zgodnie z dokumentacją dla programistów gRPC, aby wygenerować atrapy klienta w jednym z obsługiwanych języków.
  3. Wywołaj metodę RequestSync.

Node.js

Klient Node.js interfejsów API Google zapewnia powiązania dla interfejsu Home Graph API.

  1. Zainicjuj usługę google.homegraph przy użyciu domyślnych danych logowania aplikacji.
  2. Wywołaj metodę requestSync za pomocą RequestSyncDevicesRequest. Zwraca Promise 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.

  1. Zainicjuj HomeGraphApiService przy użyciu domyślnych danych logowania aplikacji.
  2. Wywołaj metodę requestSync za pomocą funkcji RequestSyncDevicesRequest. 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 atrybutu null zamiast „” dla wartości ciągu.
  • 403 Forbidden – serwer nie może przetworzyć pliku żądanie dotyczące danego elementu agentUserId 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śmy agentUserId Upewnij się, że agentUserId 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 elementu agentUserId przekroczono limit żądań. Rozmówca może wysłać tylko jedno żądanie synchronizacji, chyba że async flaga jest ustawiona na „true”.