La synchronisation des requêtes déclenche une requête SYNC
dans votre traitement pour tout utilisateur Google
avec des appareils dont le
agentUserId
qui leur sont associés (que vous
envoyé dans la demande SYNC d'origine). Cela vous permet de mettre à jour appareils
sans dissocier ni réassocier leur compte. Tous les utilisateurs associés
recevra une requête SYNC
.
Vous devez déclencher une requête SYNC
:
- si l'utilisateur ajoute un appareil ;
- Si l'utilisateur supprime un appareil existant.
- si l'utilisateur renomme un appareil existant ;
- Si vous implémentez un nouveau type d'appareil ou une nouvelle caractéristique, ou si vous ajoutez une nouvelle fonctionnalité d'appareil.
Commencer
Pour implémenter la synchronisation des requêtes, procédez comme suit:
Activer l'API Google HomeGraph
-
Dans Google Cloud Console, accédez à la page API HomeGraph.
Accéder à la page de l'API HomeGraph - Sélectionnez le projet qui correspond à l'ID de votre projet smart home.
- Cliquez sur ENABLE (ACTIVER).
Créer une clé de compte de service
Suivez ces instructions pour générer une clé de compte de service à partir de Google Cloud Console:
-
Dans Google Cloud Console, accédez à la page Créer une clé de compte de service.
Accéder à la page Créer une clé de compte de service - Dans la liste Compte de service, sélectionnez Nouveau compte de service :
- Dans le champ Nom du compte de service, saisissez un nom.
- Dans le champ ID de compte de service, saisissez un ID.
Dans la liste Rôle, sélectionnez Comptes de service > <ph type="x-smartling-placeholder"></ph> Créateur de jetons du compte de service
Dans le champ Type de clé, sélectionnez l'option JSON.
- Cliquez sur Créer. Un fichier JSON contenant votre clé des téléchargements sur votre ordinateur.
Appeler l'API
HTTP
L'API Home Graph fournit un point de terminaison HTTP
- Créer un fichier JSON Web à l'aide du fichier JSON du compte de service téléchargé Jeton (JWT). Pour en savoir plus, consultez <ph type="x-smartling-placeholder"></ph> S'authentifier à l'aide d'un compte de service
- Obtenez un jeton d'accès OAuth 2.0 à l'aide du
https://www.googleapis.com/auth/homegraph
habilitation utilisant oauth2l: - Créez la requête JSON avec le
agentUserId
. Voici un exemple de requête JSON pour la synchronisation des requêtes: - Combiner le fichier JSON de synchronisation des requêtes et le jeton dans votre requête HTTP POST
au point de terminaison Google Home Graph. Voici un exemple
de la façon dont
pour effectuer la requête dans la ligne de commande en utilisant
curl
, comme suit : un 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 fournit un point de terminaison gRPC
- Obtenez la définition du service Protocol Buffers pour l'API Home Graph.
- Suivez la documentation gRPC destinée aux développeurs afin de générer des bouchons de client pour l'une des langues compatibles.
- Appelez la méthode RequestSync.
Node.js
Le client Node.js des API Google fournit des liaisons pour l'API Home Graph.
- Initialisez le service
google.homegraph
à l'aide des identifiants par défaut de l'application. - Appelez la méthode
requestSync
avec RequestSyncDevicesRequest. Elle renvoie unPromise
avec une RequestSyncDevicesResponse vide.
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 bibliothèque cliente de l'API HomeGraph pour Java fournit des liaisons pour l'API HomeGraph.
- Initialisez
HomeGraphApiService
à l'aide des identifiants par défaut de l'application. - Appelez la méthode
requestSync
avecRequestSyncDevicesRequest
. Elle renvoie unReportStateAndNotificationResponse
vide.
// 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);
Réponses d'erreur
Vous pouvez recevoir l'une des réponses d'erreur suivantes lorsque vous appelez Request Sync. Ces réponses se présentent sous la forme de codes d'état HTTP.
400 Bad Request
: impossible de traiter le serveur. la requête envoyée par le client en raison d'une syntaxe non valide. Causes courantes Incluez un fichier JSON mal formé ou utiliseznull
au lieu de "" pour une valeur de chaîne.403 Forbidden
: le serveur n'a pas pu traiter le fichier la requête pour l'élémentagentUserId
donné en raison d'une erreur en actualisant le jeton. Assurez-vous que votre point de terminaison OAuth répond pour actualiser les demandes de jetons et vérifier l'association du compte de l'utilisateur état.404 Not Found
: la ressource demandée n'a pas pu être mais elle sera peut-être disponible à l'avenir. En général, cela signifie que le compte utilisateur n'est pas associé à Google ou nous avons reçu un message d'erreuragentUserId
Assurez-vous queagentUserId
correspond à la valeur fournie dans votre réponse SYNC, et vous avez correctement qui gère les intents DISCONNECT.429 Too Many Requests
: nombre maximal de synchronisations simultanées ont été dépassés pour leagentUserId
donné. Un appelant ne peut émettre qu'une seule requête de synchronisation simultanée, sauf siasync
est défini sur "true".