Sincronizzazione richieste attiva una richiesta SYNC
nel tuo evasione per qualsiasi utente Google
a cui è associato il valore
agentUserId
specificato (che hai inviato nella richiesta SYNC originale). In questo modo puoi aggiornare i dispositivi degli utenti
senza scollegare e ricollegare i loro account. Tutti gli utenti collegati a questo
identificatore riceveranno una richiesta SYNC
.
Devi attivare una richiesta SYNC
:
- Se l'utente aggiunge un nuovo dispositivo.
- Se l'utente rimuove un dispositivo esistente.
- Se l'utente rinomina un dispositivo esistente.
- Se implementi un nuovo tipo di dispositivo o trait oppure aggiungi una nuova funzionalità del dispositivo.
Inizia
Per implementare la sincronizzazione delle richieste, segui questi passaggi:
Attiva l'API Google HomeGraph
-
In Google Cloud Console, vai alla pagina dell'API HomeGraph.
Vai alla pagina dell'API HomeGraph - Seleziona il progetto che corrisponde al tuo ID progetto smart home.
- Fai clic su ABILITA.
Crea una chiave dell'account di servizio
Segui queste istruzioni per generare una chiave dell'account di servizio dal Google Cloud Console:
-
In Google Cloud Console, vai alla pagina Crea chiave account di servizio.
Vai alla pagina Crea chiave account di servizio - Dall'elenco Account di servizio, seleziona Nuovo account di servizio.
- Inserisci un nome nel campo Nome account di servizio.
- Inserisci un ID nel campo ID account di servizio.
Nell'elenco Ruolo, seleziona Account di servizio > Creatore token account di servizio.
In Tipo di chiave, seleziona l'opzione JSON.
- Fai clic su Crea. Sul computer viene scaricato un file JSON contenente la chiave.
Chiama l'API
HTTP
L'API Home Graph fornisce un endpoint HTTP
- Utilizza il file JSON dell'account di servizio scaricato per creare un token JWT (JSON Web Token). Per maggiori informazioni, consulta la pagina relativa all' autenticazione tramite account di servizio.
- Ottieni un token di accesso OAuth 2.0 con l'ambito
https://www.googleapis.com/auth/homegraph
utilizzando oauth2l: - Crea la richiesta JSON con l'elemento
agentUserId
. Ecco un esempio di richiesta JSON per Richiesta di sincronizzazione: - Combina il JSON di sincronizzazione della richiesta e il token nella richiesta POST HTTP all'endpoint di Google Home Graph. Ecco un esempio di come effettuare la richiesta nella riga di comando utilizzando
curl
, come 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
L'API Home Graph fornisce un endpoint gRPC
- Recupera la definizione del servizio di buffer di protocollo per l'API Home Graph.
- Segui la documentazione per gli sviluppatori gRPC per generare stub client per una delle lingue supportate.
- Chiama il metodo RequestSync.
Node.js
Il client Node.js delle API di Google fornisce associazioni per l'API Home Graph.
- Inizializza il servizio
google.homegraph
utilizzando Credenziali predefinite dell'applicazione. - Chiama il metodo
requestSync
con RequestSyncDevicesRequest. RestituiscePromise
con un campo RequestSyncDevicesResponse vuoto.
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
La libreria client dell'API HomeGraph per Java fornisce associazioni per l'API Home Graph.
- Inizializza
HomeGraphApiService
utilizzando Credenziali predefinite dell'applicazione. - Chiama il metodo
requestSync
con ilRequestSyncDevicesRequest
. Restituisce un valoreReportStateAndNotificationResponse
vuoto.
// 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);
Risposte di errore
Quando chiami Richiedi sincronizzazione potresti ricevere una delle seguenti risposte di errore. Queste risposte vengono presentate sotto forma di codici di stato HTTP.
400 Bad Request
: il server non è riuscito a elaborare la richiesta inviata dal client a causa di una sintassi non valida. Le cause comuni includono un JSON non corretto o l'utilizzo dinull
anziché "" per un valore stringa.403 Forbidden
: il server non è riuscito a elaborare la richiesta per il valoreagentUserId
specificato a causa di un errore durante l'aggiornamento del token. Assicurati che l'endpoint OAuth risponda correttamente per aggiornare le richieste di token e controllare lo stato di collegamento dell'account dell'utente.404 Not Found
- Impossibile trovare la risorsa richiesta, ma potrebbe essere disponibile in futuro. In genere, ciò significa che l'account utente non è collegato a Google o che abbiamo ricevuto unagentUserId
non valido. Assicurati cheagentUserId
corrisponda al valore fornito nella risposta SYNC e di gestire correttamente gli intent DISCONNECT.429 Too Many Requests
: è stato superato il numero massimo di richieste di sincronizzazione simultanee peragentUserId
specificato. Un chiamante può inviare una sola richiesta di sincronizzazione contemporanea, a meno che il flagasync
non sia impostato su true.