Une fois vos projets Google Cloud et Device Access créés, peut autoriser un compte Google avec un appareil Google Nest compatible pour API SDM.
Associer votre compte
Pour afficher les structures et les appareils, vous devez associer un compte Google à votre Device Access à l'aide du PCM. PCM permet à user d'accorder l'autorisation à permet aux developerd'accéder à leurs structures et aux données de leurs appareils.
Dans ce guide, vous allez jouer en tant que user et developer.
Ouvrir le lien suivant dans un navigateur Web en remplaçant:
- project-id par votre Device Access Project ID
- oauth2-client-id par l'ID client OAuth2 provenant de votre Google Cloud Identifiants
https://nestservices.google.com/partnerconnections/project-id/auth?
redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service - Si vous vous êtes connecté à Google avec plusieurs comptes récemment, vous êtes peut-être un premier écran Sélectionner un compte s'affiche. Il contient la liste Comptes Google. Si tel est le cas, sélectionnez le compte Google associé aux appareils que vous souhaitez autoriser pour Device Access.
- L'écran Google Nest permissions (Autorisations Google Nest) correspond à PCM. Ici, vous pouvez accorder des autorisations pour la structure et l'appareil. Activez le pour votre maison (étape 1) et pour tous les appareils qui s'y trouvent compatible avec l'API SDM (étape 2), puis cliquez sur Suivant.
- Sur l'écran Sélectionner un compte pour accéder à l'écran Nom du projet, où Nom du projet est le nom de votre projet Google Cloud, sélectionnez le compte Google que vous souhaitez autoriser API SDM. Utilisez le même compte Google qu'auparavant.
- Après avoir choisi un compte, un écran d'avertissement peut s'afficher Google n'a pas validé cette application. Si c'est le cas, cliquez sur le bouton Advanced (Avancé), puis cliquez sur Go to Project Name (unsafe) (Accéder au nom du projet (non sécurisé). Voir Google n'a pas validé cette application pour d'autres des informations.
- Sur l'écran Accorder l'autorisation Nom du projet, cliquez sur Autoriser pour accorder l'autorisation du projet à accéder à votre compte Google.
- Sur l'écran Confirmez vos choix, vérifiez que les autorisations à accorder sont cochées, puis cliquez sur Autoriser pour confirmer.
Vous devriez être redirigé vers https://www.google.com. Le code d'autorisation est renvoyé en tant que paramètre
code
dans l'URL, qui doit se présenter comme suit:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Copiez le code d'autorisation.
Obtenir un jeton d'accès
Utilisez le code d'autorisation pour récupérer un jeton d'accès que vous pouvez utiliser pour appeler l'API SDM.
Ouvrez un terminal et exécutez la commande suivante : en remplaçant la commande
curl
suivante:- oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
- authorization-code par le code reçu à l'étape précédente
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?
client_id=oauth2-client-id& client_secret=oauth2-client-secret& code=authorization-code& grant_type=authorization_code& redirect_uri=https://www.google.com' Google OAuth renvoie deux jetons : un jeton d'accès et un jeton d'actualisation.
{
Copiez ces deux valeurs. Le jeton d'accès est utilisé pour appeler L'API SDM et le jeton d'actualisation permettent d'obtenir un jeton d'accès.
Passer un appel à la liste des appareils
L'autorisation ne sera pas terminée tant que vous n'aurez pas
votre première
devices.list
avec votre nouveau jeton d'accès. Ce
l'appel initial termine le processus d'autorisation et active les événements si
vous avez déjà configuré
un abonnement Pub/Sub.
Utilisez curl
pour effectuer cet appel pour le point de terminaison devices
:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Les appels réussis affichent la liste des appareils associés à votre Device Access projet. Chaque appareil dispose de sa propre liste de caractéristiques disponibles:
{ "devices": [ { "name": "enterprises/project-id/devices/device-id", "type": "sdm.devices.types.device-type", "traits": { ... }, "parentRelations": [ { "parent": "enterprises/project-id/structures/structure-id/rooms/room-id", "displayName": "device-room-name" } ] } ] }
Utiliser un jeton d'actualisation
Les jetons d'accès pour l'API SDM ne sont
valide pendant 1 heure, comme indiqué dans le paramètre expires_in
renvoyé par Google OAuth. Si
votre jeton d'accès expire, utilisez le jeton d'actualisation pour en obtenir un nouveau.
La commande est semblable à celle du jeton d'accès, sauf que vous utilisez une autre
grant_type
Ouvrez un terminal et exécutez la la commande
curl
suivante, en remplaçant:- oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
- refresh-token par le code que vous avez reçu lors de l'obtention de l'accès à partir d'un jeton d'accès.
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?
client_id=oauth2-client-id& client_secret=oauth2-client-secret& refresh_token=refresh-token& grant_type=refresh_token' Google OAuth renvoie un nouveau jeton d'accès.
{
Dépannage
Pour en savoir plus sur Google OAuth, consultez Utilisation d'OAuth 2.0 pour accéder à API.
Le jeton d'actualisation expire sans cesse
Les jetons d'actualisation peuvent cesser de fonctionner au bout de sept jours si l'ID client n'est pas approuvé une cause possible. Le délai d'expiration du jeton de sept jours n'est pas lié aux règles ou approbations de bac à sable. Un compte de service ou d'utilisateur doit obtenir son authentification OAuth ID client 2.0 approuvé et mis en production pour obtenir des durées de jeton plus longues. Pour en savoir plus, consultez Expiration du jeton d'actualisation des informations.
Accès refusé
Si vous avez configuré l'écran de consentement OAuth dans Google Cloud et que que le type d'utilisateur est Externe, le message "Accès refusé" s'affiche si vous Tentative d'association de compte à un compte Google non listé en tant qu'utilisateur test pour votre application. Veillez à ajouter le compte Google à la section Utilisateurs tests. sur l'écran de consentement OAuth.
Erreur du gestionnaire des connexions partenaires (PCM)
Pour obtenir de l'aide concernant les erreurs rencontrées lors de l'accès PCM, voir Gestionnaire des connexions partenaires (PCM) Documentation de référence sur les erreurs.
Google n'a pas validé cette application
L'API SDM utilise un champ d'application restreint, ce qui signifie que toute les applications qui utilisent ce champ d'application pendant l'autorisation seront marquées comme "non validées". sauf La validation de l'API OAuth est terminée. Si vous utilisez Device Access pour pour un usage personnel, la validation de l'API OAuth n'est pas requise.
Le message "Google n'a pas validé cette application" peut s'afficher. pendant l'autorisation
qui apparaît si le niveau d'accès sdm.service
n'est pas configuré sur
votre écran de consentement OAuth dans Google Cloud. Cet écran peut être
être ignoré en cliquant sur l'option Advanced (Avancé), puis en cliquant sur Go to Project
Nom (dangereux).
Voir Application non validée écran pour en savoir plus.
Client non valide
Lorsque vous tentez d'obtenir un jeton d'accès ou d'actualisation, le message
client » si vous fournissez un code secret du client OAuth 2.0 incorrect. Assurez-vous que le paramètre
La valeur client_secret
que vous utilisez dans les appels de jetons d'accès et d'actualisation est celle
correspondant à l'ID client OAuth 2.0 utilisé, tel qu'il figure dans votre
Google Cloud
Identifiants
.
Requête non valide, champ d'application requis manquant
Après avoir accordé des autorisations dans PCM, vous pouvez rencontrer un
"Demande incorrecte" l'erreur "Valeur manquante dans le paramètre obligatoire: portée". Assurez-vous que le paramètre
La valeur scope
que vous utilisez dans les appels d'autorisation est identique à celle que vous avez définie pour le client OAuth 2.0,
tels qu'ils apparaissent dans votre compte
Identifiants
.
L'URI de redirection ne correspond pas
Lors de l'autorisation, vous pouvez rencontrer le message d'erreur "L'URI de redirection ne correspond pas".
. Assurez-vous que la valeur redirect_uri
que vous utilisez dans les appels d'autorisation est
celui que vous avez défini pour le client OAuth 2.0, tel qu'il figure dans votre
Google Cloud
Identifiants
.
Modifier les autorisations du compte
Modifier les autorisations accordées à un projet Device Access ou le dissocier complètement, optez pour PCM:
https://nestservices.google.com/partnerconnections
Cette page affiche tous les services pour les développeurs tiers (Device Access projets) connecté à votre compte. Sélectionnez le Device Access projet que vous souhaitez le changement. Utilisez l'écran suivant pour modifier les autorisations comme vous le souhaitez.
Pour révoquer uniquement des autorisations spécifiques pour un service autorisé, activez l'option les autorisations à révoquer et cliquez sur la flèche de retour pour les enregistrer.
Pour dissocier complètement un service autorisé, cliquez sur Dissocier votre compte Account pour révoquer toutes les autorisations et tous les jetons d'accès accordés au projet accordé pour le compte.
Si PCM n'affiche pas le service souhaité, vous devrez peut-être passez d'abord un appel à la liste des appareils.
Référence rapide
Utilisez cette documentation de référence pour implémenter rapidement la procédure d'autorisation user et associer leur compte Google pour en savoir plus.
Pour utiliser cette référence rapide, modifiez chaque variable d'espace réservé dans les exemples de code avec les valeurs propres à votre intégration, puis copiez-collez si nécessaire:
1 PCM
Ouvrir le lien suivant dans un navigateur Web en remplaçant:
- project-id par votre Device Access Project ID
- oauth2-client-id par l'ID client OAuth2 provenant de votre Google Cloud Identifiants
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service
2. Code d'autorisation
Vous devriez être redirigé vers
https://www.google.com. Le code d'autorisation est renvoyé en tant que paramètre code
dans l'URL,
qui doit se présenter comme suit:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 Jeton d'accès
Utilisez le code d'autorisation pour récupérer un jeton d'accès que vous pouvez utiliser pour appeler l'API SDM.
Ouvrez un terminal et exécutez la commande suivante :
en remplaçant la commande curl
suivante:
- oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
- authorization-code par le code reçu à l'étape précédente
Google OAuth renvoie deux jetons : un jeton d'accès et un jeton d'actualisation.
Requête
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=https://www.google.com'
Réponse
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }
4. Appel d'API
L'autorisation ne sera pas terminée tant que vous n'aurez pas
votre première
devices.list
avec votre nouveau jeton d'accès. Ce
l'appel initial termine le processus d'autorisation et active les événements si
vous avez déjà configuré
un abonnement Pub/Sub.
Vous devez utiliser l'un des Appels d'API listés pour le champ d'application spécifié afin de finaliser l'autorisation.
sdm.service
appareils
Consultez le
devices.list
pour en savoir plus.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
5. Jeton d'actualisation
Les jetons d'accès pour l'API SDM ne sont
valide pendant 1 heure, comme indiqué dans le paramètre expires_in
renvoyé par Google OAuth. Si
votre jeton d'accès expire, utilisez le jeton d'actualisation pour en obtenir un nouveau.
Ouvrez un terminal et exécutez la
la commande curl
suivante, en remplaçant:
- oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
- refresh-token par le code que vous avez reçu lors de l'obtention de l'accès à partir d'un jeton d'accès.
Google OAuth renvoie un nouveau jeton d'accès.
Requête
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'
Réponse
{"access_token": "new-access-token",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }