Durch „Request Sync“ wird eine SYNC-Anfrage an Ihren Fulfillment-Endpunkt für alle Google-Nutzer mit Geräten ausgelöst, denen die angegebene agentUserId zugeordnet ist (die Sie in der ursprünglichen SYNC-Anfrage gesendet haben). So können Sie die Geräte von Nutzern aktualisieren, ohne die Verknüpfung ihres Kontos aufzuheben und wiederherzustellen. Alle Nutzer, die mit dieser Kennung 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 „Synchronisierung anfordern“:
Google HomeGraph API aktivieren
- 
    Rufen Sie in der Google Cloud Console die Seite HomeGraph API auf. Zur Seite „HomeGraph API“
- Wählen Sie das Projekt aus, das Ihrer smart home-Projekt-ID entspricht.
- Klicken Sie auf AKTIVIEREN.
Dienstkontoschlüssel erstellen
Folgen Sie dieser Anleitung, um einen Dienstkontoschlüssel über die Google Cloud Console zu generieren:
- 
    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. 
- Klicken Sie auf Dienstkonto erstellen. 
- Geben Sie im Feld Dienstkontoname einen Namen ein. 
- Geben Sie im Feld Dienstkonto-ID eine ID ein. 
- Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. 
- Klicken Sie auf Erstellen und fortfahren. 
- Wählen Sie im Drop-down-Menü Rolle die Option Dienstkonten > Ersteller von OpenID Connect-Identitätstokens für Dienstkonten aus. 
- Klicken Sie auf Weiter. 
- Klicken Sie auf Fertig. 
- Wählen Sie das gerade erstellte Dienstkonto aus der Liste der Dienstkonten aus und wählen Sie im Menü Aktionen die Option Schlüssel verwalten aus. 
- Wählen Sie Schlüssel hinzufügen > Neuen Schlüssel erstellen aus. 
- Wählen Sie als Schlüsseltyp die Option JSON aus. 
- Klicken Sie auf Erstellen. Eine JSON-Datei mit Ihrem Schlüssel wird auf Ihren Computer heruntergeladen. 
API aufrufen
HTTP
Die Home Graph API bietet einen HTTP-Endpunkt.
- Erstellen Sie mit der heruntergeladenen JSON-Datei für das Dienstkonto ein JSON Web Token (JWT). Weitere Informationen finden Sie unter Authentifizierung mit einem Dienstkonto.
- Rufen Sie mit oauth2l ein OAuth 2.0-Zugriffstoken mit dem Bereich https://www.googleapis.com/auth/homegraphab:
- Erstellen Sie die JSON-Anfrage mit der agentUserId. Hier ist ein Beispiel für eine JSON-Anfrage für „Synchronisierung anfordern“:
- Kombiniere das JSON für die Synchronisierungsanfrage und das Token in deiner HTTP-POST-Anfrage an den Google Home Graph-Endpunkt. Hier ein Beispiel dafür, wie Sie die Anfrage in der Befehlszeile mit curlals Test stellen:
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
Die Home Graph API bietet einen gRPC-Endpunkt.
- Rufen Sie die Protocol Buffers-Dienstdefinition für die Home Graph API ab.
- Folgen Sie der gRPC-Entwicklerdokumentation, um Client-Stubs für eine der unterstützten Sprachen zu generieren.
- Rufen Sie die Methode RequestSync auf.
Node.js
Der Google APIs Node.js-Client bietet Bindungen für die Home Graph API.
- Initialisieren Sie den google.homegraph-Dienst mit Standardanmeldedaten für Anwendungen.
- Rufen Sie die Methode requestSyncmit RequestSyncDevicesRequest auf. Es wird einPromisemit einer leeren RequestSyncDevicesResponse zurückgegeben.
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.
- Initialisieren Sie HomeGraphApiServicemit Standardanmeldedaten für Anwendungen.
- Rufen Sie die Methode requestSyncmit demRequestSyncDevicesRequestauf. Es wird ein leeresReportStateAndNotificationResponsezurückgegeben.
// 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 „Synchronisierung anfordern“ kann eine der folgenden Fehlerantworten zurückgegeben werden. 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- nullanstelle von „“ für einen Stringwert.
- 403 Forbidden: Der Server konnte die Anfrage für das angegebene- agentUserIdaufgrund eines Fehlers beim Aktualisieren des Tokens nicht verarbeiten. Achten Sie darauf, dass Ihr OAuth-Endpunkt korrekt auf Anfragen für Aktualisierungstokens reagiert, und prüfen Sie den Status der Kontoverknüpfung des Nutzers.
- 404 Not Found: Die angeforderte Ressource wurde nicht gefunden, ist aber möglicherweise in Zukunft verfügbar. Das bedeutet in der Regel, dass das Nutzerkonto nicht mit Google verknüpft ist oder wir eine ungültige- agentUserIderhalten haben. Achten Sie darauf, dass- agentUserIdmit dem in Ihrer SYNC-Antwort angegebenen Wert übereinstimmt und dass Sie DISCONNECT-Intents richtig verarbeiten.
- 429 Too Many Requests– Die maximale Anzahl gleichzeitiger Synchronisierungsanfragen für die angegebene- agentUserIdwurde überschritten. Ein Aufrufer darf nur eine gleichzeitige Synchronisierungsanfrage stellen, es sei denn, das Flag- asyncist auf „true“ gesetzt.