Synchronisierung anfordern

Cloud-to-cloud

Request Sync löst eine SYNC-Anfrage an Ihre Fulfillment-Lösung für alle Google-Nutzer mit Geräten aus, denen die angegebene agentUserId zugeordnet ist (die Sie in der ursprünglichen SYNC-Anfrage gesendet haben). So können Sie die Geräte der Nutzer aktualisieren, ohne die Verknüpfung ihres Kontos aufzuheben und wieder zu verknüpfen. Alle Nutzer, die mit dieser ID verknüpft sind, erhalten eine SYNC-Anfrage.

Sie müssen eine SYNC-Anfrage auslösen:

  • wenn der Nutzer ein neues Gerät hinzufügt.
  • wenn der Nutzer ein vorhandenes Gerät entfernt.
  • wenn der Nutzer ein vorhandenes Gerät umbenennt.
  • wenn Sie einen neuen Gerätetyp oder ein neues Merkmal implementieren oder eine neue Gerätefunktion hinzufügen.

Jetzt starten

So implementieren Sie Request Sync:

Google HomeGraph API aktivieren

  1. Rufen Sie in der Google Cloud Console die Seite HomeGraph API auf.

    Zur Seite „HomeGraph API“
  2. Wählen Sie das Projekt aus, das mit Ihrer smart home Projekt-ID übereinstimmt.
  3. Klicken Sie auf AKTIVIEREN.

Dienstkontoschlüssel erstellen

Folgen Sie dieser Anleitung, um einen Dienstkontoschlüssel in der Google Cloud Console zu generieren:

Hinweis: Achten Sie darauf, dass Sie bei diesen Schritten das richtige GCP-Projekt verwenden. Dies ist das Projekt, das mit Ihrer smart home Projekt-ID übereinstimmt.
  1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.

    Zur Seite „Dienstkonten“.

    Möglicherweise müssen Sie ein Projekt auswählen, bevor Sie zur Seite „Dienstkonten“ weitergeleitet werden.

  2. Klicken Sie auf Dienstkonto erstellen.

  3. Geben Sie im Feld Dienstkontoname einen Namen ein.

  4. Geben Sie im Feld Dienstkonto-ID eine ID ein.

  5. Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein.

  6. Klicken Sie auf Erstellen und fortfahren.

  7. Wählen Sie im Drop-down-Menü Rolle die Option Dienstkonten > Ersteller von OpenID Connect-Identitätstokens für Dienstkonten aus.

  8. Klicken Sie auf Weiter.

  9. Klicken Sie auf Fertig.

  10. Wählen Sie das gerade erstellte Dienstkonto in der Liste der Dienstkonten aus und wählen Sie Schlüssel verwalten im Menü Aktionen aus.

  11. Wählen Sie Schlüssel hinzufügen > Neuen Schlüssel erstellen aus.

  12. Wählen Sie für den Schlüsseltyp die Option JSON aus.

  13. Klicken Sie auf Erstellen. Eine JSON-Datei mit Ihrem Schlüssel wird auf Ihren Computer heruntergeladen.

Eine detaillierte Anleitung und Informationen zum Erstellen von Dienstkontoschlüsseln finden Sie auf der Google Cloud Console-Hilfeseite unter Dienstkontoschlüssel erstellen und löschen.

API aufrufen

HTTP

Die Home Graph API bietet einen HTTP-Endpunkt.

  1. Erstellen Sie mit der heruntergeladenen JSON-Datei des Dienstkontos ein JSON Web Token (JWT). Weitere Informationen finden Sie unter Mit einem Dienstkonto authentifizieren.
  2. Rufen Sie mit oauth2l ein OAuth 2.0-Zugriffstoken mit dem https://www.googleapis.com/auth/homegraph Bereich ab:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. Erstellen Sie die JSON-Anfrage mit der agentUserId. Hier ist eine Beispiel-JSON-Anfrage für Request Sync:
  5. {
      "agentUserId": "user-123"
    }
  6. Kombinieren Sie das Request Sync-JSON und das Token in Ihrer HTTP-POST Anfrage an den Google Home Graph-Endpunkt. Hier ein Beispiel, wie Sie die Anfrage in der Befehlszeile mit curl als Test stellen können:
  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

Die Home Graph API bietet einen gRPC-Endpunkt.

  1. Rufen Sie die Protocol Buffers-Dienstdefinition für die Home Graph API ab.
  2. Folgen Sie der gRPC-Entwicklerdokumentation, um Client-Stubs für eine der unterstützten Sprachen zu generieren.
  3. Rufen Sie die RequestSync Methode auf.

Node.js

Der Google APIs Node.js-Client bietet Bindungen für die Home Graph API.

  1. Initialisieren Sie den google.homegraph Dienst mit Standardanmeldedaten für Anwendungen.
  2. Rufen Sie die requestSync Methode mit der RequestSyncDevicesRequest auf. Sie gibt ein Promise mit einer leeren RequestSyncDevicesResponse zurück.
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

Die HomeGraph API-Clientbibliothek für Java bietet Bindungen für die Home Graph API.

  1. Initialisieren Sie HomeGraphApiService mit Standardanmeldedaten für Anwendungen.
  2. Rufen Sie die requestSync Methode mit der RequestSyncDevicesRequest auf. Sie gibt eine leere ReportStateAndNotificationResponse zurück.
// 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);
    

Fehlerantworten

Beim Aufrufen von Request Sync können Sie eine der folgenden Fehlerantworten erhalten. Diese Antworten werden in Form von HTTP-Statuscodes zurückgegeben.

  • 400 Bad Request : Der Server konnte die vom Client gesendete Anfrage aufgrund einer ungültigen Syntax nicht verarbeiten. Häufige Ursachen sind fehlerhaftes JSON oder die Verwendung von null anstelle von "" für einen Stringwert.
  • 403 Forbidden : Der Server konnte die Anfrage für die angegebene agentUserId aufgrund eines Fehlers beim Aktualisieren des Tokens nicht verarbeiten. Achten Sie darauf, dass Ihr OAuth-Endpunkt korrekt auf Anfragen zur Aktualisierung von Tokens antwortet, und prüfen Sie den Status der Kontoverknüpfung des Nutzers.
  • 404 Not Found - Die angeforderte Ressource konnte nicht gefunden werden, ist aber möglicherweise in Zukunft verfügbar. In der Regel bedeutet dies, dass das Nutzerkonto nicht mit Google verknüpft ist oder wir eine ungültige agentUserId erhalten haben. Achten Sie darauf, dass die agentUserId mit dem in Ihrer SYNC-Antwort angegebenen Wert übereinstimmt und Sie DISCONNECT-Absichten korrekt verarbeiten.
  • 429 Too Many Requests : Die maximale Anzahl gleichzeitiger Synchronisierungsanfragen wurde für die angegebene agentUserId überschritten. Ein Aufrufer darf nur eine gleichzeitige Synchronisierungsanfrage stellen, es sei denn, das Flag async ist auf „true“ gesetzt.