Une fois vos projets Google Cloud et Device Access créés, vous pouvez autoriser un compte Google avec un appareil Google Nest compatible pour l'API SDM.
Associer votre compte
Pour afficher les structures et les appareils, vous devez associer un compte Google à votre Device Access projet à l'aide du PCM. Le PCM permet à l' user de donner l'autorisation à permettre developers d'accéder à ses structures et aux données de ses appareils.
Dans ce guide, vous jouez le rôle de l' user et du developer.
Ouvrez 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 de vos identifiants Google Cloud
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, un écran Choisir un compte s'affiche peut-être avec la liste de vos comptes Google. Si c'est le cas, sélectionnez le compte Google associé aux appareils pour lesquels vous souhaitez autoriser l'accès Device Access.
- L'écran Autorisations Google Nest est le PCM lui-même. Vous pouvez y accorder des autorisations pour les structures et les appareils. Activez les autorisations pour votre maison (étape 1) et tous les appareils de cette maison compatibles avec l'API SDM (étape 2), puis cliquez sur Suivant.
- Sur l'écran Choisir un compte pour continuer vers Nom du projet, où Nom du projet est le nom de votre projet Google Cloud, sélectionnez le compte Google pour lequel vous souhaitez autoriser l'accès à l'API SDM. Utilisez le même compte Google que précédemment.
- Après avoir choisi un compte, un écran d'avertissement indiquant Google n'a pas validé cette application peut s'afficher. Si c'est le cas, cliquez sur l'option Avancé, puis sur Accéder à Nom du projet (non sécurisé) pour continuer. Pour en savoir plus, consultez Google n'a pas validé cette application.
- Sur l'écran Accorder l'autorisation à Nom du projet, cliquez sur Autoriser pour accorder au projet l'autorisation d'accéder à votre compte Google.
- Sur l'écran Confirmer vos choix , assurez-vous que les autorisations que vous souhaitez 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
codedans l'URL, qui doit être au format suivant :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 pourrez utiliser pour appeler l'API SDM.
Ouvrez un terminal et exécutez la commande
curlsuivante, en remplaçant :- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client de vos identifiants Google Cloud
- authorization-code par le code que vous avez 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 permet d'appeler l'API SDM, et le jeton d'actualisation permet d'obtenir un nouveau jeton d'accès.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Effectuer un appel de liste d'appareils
L'autorisation n'est pas terminée tant que vous n'avez pas effectué
votre premier
devices.list
appel avec votre nouveau jeton d'accès. Cet
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'Un appel réussi renvoie une liste des appareils associés à votre Device Access projet. Chaque appareil possède sa propre liste unique 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"
}
]
}
]
}Comment utiliser un jeton d'actualisation
Les jetons d'accès pour l'API SDM ne sont
valides que pendant une heure, comme indiqué dans le expires_in paramètre 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 un grant_type différent.
Ouvrez un terminal et exécutez la commande
curlsuivante, en remplaçant :- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client de vos identifiants Google Cloud
- refresh-token par le code que vous avez reçu lors de l'obtention initiale du 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.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Dépannage
Pour en savoir plus sur Google OAuth, consultez Utiliser OAuth 2.0 pour accéder aux API Google.
Le jeton d'actualisation continue d'expirer
Les jetons d'actualisation peuvent cesser de fonctionner au bout de sept jours si l'ID client n'est pas approuvé. L'expiration du jeton au bout de 7 jours n'est pas liée aux approbations commerciales ou de bac à sable. Un compte de service ou d'utilisateur doit faire approuver son ID client OAuth 2.0 et le mettre en production pour obtenir des durées de vie de jeton plus longues. Pour en savoir plus, consultez Expiration du jeton d'actualisation.
Accès refusé
Si vous avez configuré votre écran de consentement OAuth dans Google Cloud et que le Type d'utilisateur est Externe, vous recevrez une erreur "Accès refusé" si vous tentez d'associer un compte à un compte Google qui n'est pas répertorié en tant qu'utilisateur test pour votre application. Veillez à ajouter le compte Google à la section Utilisateurs test de votre é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 au PCM, consultez la documentation de référence sur les erreurs du gestionnaire des connexions partenaires (PCM).
Google n'a pas validé cette application
L'API SDM utilise un champ d'application restreint, ce qui signifie que toutes les applications qui utilisent ce champ d'application lors de l'autorisation seront "non validées", sauf si la validation de l'API OAuth est terminée. Lorsque vous utilisez Device Access pour un usage personnel, la validation de l'API OAuth n'est pas requise.
Un écran "Google n'a pas validé cette application" peut s'afficher lors du processus d'autorisation
si le champ d'application sdm.service n'est pas configuré sur
votre écran de consentement OAuth dans Google Cloud. Vous pouvez ignorer cet écran en cliquant sur l'option Avancé , puis sur Accéder à Nom du projet (non sécurisé).
Pour en savoir plus, consultez Écran d'application non validée.
Client non valide
Lorsque vous tentez d'obtenir un jeton d'accès ou d'actualisation, vous recevez une erreur "Client non valide" si vous fournissez un code secret du client OAuth 2.0 incorrect. Assurez-vous que la valeur
client_secret que vous utilisez dans les appels de jeton d'accès et d'actualisation est celle
de l'ID client OAuth 2.0 utilisé, comme indiqué sur la page
Identifiants Google Cloud.
Requête non valide, champ d'application requis manquant
Après avoir accordé des autorisations dans le PCM, vous pouvez rencontrer une erreur "Requête non valide" de type "Paramètre requis manquant : champ d'application". Assurez-vous que la valeur
scope que vous utilisez dans les appels d'autorisation est la même que celle que vous avez définie pour le client OAuth 2.0,
comme indiqué sur la page Identifiants
Google Cloud.
Incohérence de l'URI de redirection
Lors de l'autorisation, vous pouvez rencontrer une erreur "Incohérence de l'URI de redirection". Assurez-vous que la valeur redirect_uri que vous utilisez dans les appels d'autorisation est
la même que celle que vous avez définie pour le client OAuth 2.0, comme indiqué sur la page
Identifiants Google Cloud.
Modifier les autorisations du compte
Pour modifier les autorisations accordées à un Device Access projet ou le déconnecter complètement, accédez au PCM :
https://nestservices.google.com/partnerconnections
Cette page affiche tous les services de développement tiers (Device Access projets) associés à votre compte. Sélectionnez le Device Access projet que vous souhaitez modifier. Utilisez l'écran suivant pour modifier les autorisations selon vos besoins.
Pour révoquer uniquement des autorisations spécifiques pour un service autorisé, désactivez les autorisations que vous souhaitez révoquer et cliquez sur la flèche Retour pour enregistrer.
Pour déconnecter complètement un service autorisé, cliquez sur Dissocier votre compte Google pour révoquer toutes les autorisations et tous les jetons d'accès accordés au projet pour le compte.
Si le PCM n'affiche pas le service souhaité, vous devrez peut-être d'abord effectuer un appel de liste d'appareils.
Légende
Utilisez cette référence pour mettre en œuvre rapidement les étapes permettant d'autoriser un user et d'associer son compte Google .
Pour utiliser cette référence rapide, modifiez chaque variable d'espace réservé dans les exemples de code avec les valeurs de votre intégration spécifique, puis copiez-collez-les si nécessaire :
1 PCM
Ouvrez 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 de vos identifiants Google Cloud
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 être au format suivant :
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 pourrez utiliser pour appeler l'API SDM.
Ouvrez un terminal et exécutez
la commande curl suivante, en remplaçant :
- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client de vos identifiants Google Cloud
- authorization-code par le code que vous avez 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 n'est pas terminée tant que vous n'avez pas effectué
votre premier
devices.list
appel avec votre nouveau jeton d'accès. Cet
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 terminer l'autorisation.
sdm.service
appareils
Pour en savoir plus, consultez la documentation de référence de l'API
devices.list.
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
valides que pendant une heure, comme indiqué dans le expires_in paramètre 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
commande curl suivante, en remplaçant :
- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client de vos identifiants Google Cloud
- refresh-token par le code que vous avez reçu lors de l'obtention initiale du 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"
}