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 projetDevice Access à l'aide du PCM. PCM permet à user d'accorder l'autorisation aux developerd'accéder à leurs structures et aux données de leur appareil.
Dans ce guide, vous faites office de user et de developer.
Ouvrez le lien suivant dans un navigateur Web en remplaçant:
- project-id avec votre Device Access Project ID
- oauth2-client-id par l'ID client OAuth2 provenant 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 récemment connecté à Google avec plusieurs comptes, un écran initial Sélectionner un compte peut s'afficher, avec une liste de vos 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) affiche le PCM lui-même. Ici, vous pouvez accorder des autorisations liées à la structure et à l'appareil. 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 Sélectionnez un compte pour passer à Nom du projet, où Nom du projet correspond au nom de votre projet Google Cloud, sélectionnez le compte Google que vous souhaitez autoriser pour l'API SDM. Utilisez le même compte Google qu'auparavant.
- Après avoir choisi un compte, un écran d'avertissement peut s'afficher et indiquer que Google n'a pas validé cette application. Si c'est le cas, cliquez sur Avancé, puis sur Accéder à Nom du projet (non sécurisé). 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 autoriser le projet à accéder à votre compte Google.
- Sur l'écran Confirm your choice (Confirmer vos choix), assurez-vous que les autorisations que vous souhaitez accorder sont cochées, puis cliquez sur Allow (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, 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 pouvez 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 provenant de vos identifiants Google Cloud
- 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 permet d'appeler l'API SDM, tandis que le jeton d'actualisation permet d'obtenir un nouveau jeton d'accès.
Passer un appel de la liste des appareils
L'autorisation n'est terminée qu'une fois que vous avez effectué votre premier appel devices.list
avec votre nouveau jeton d'accès. Cet appel initial met fin au 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 projet Device Access. 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" } ] } ] }
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 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 au jeton d'accès, sauf que vous utilisez un autre grant_type
.
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 provenant 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.
{
Dépannage
Pour en savoir plus sur Google OAuth, consultez Utiliser OAuth 2.0 pour accéder aux API Google.
Le jeton d'actualisation n'arrête pas d'expirer
Les jetons d'actualisation peuvent cesser de fonctionner au bout de sept jours si l'ID client n'est pas approuvé, ce qui peut en être la cause. L'expiration du jeton de sept jours n'est pas liée aux approbations de type "Commercial" ou "Sandbox". Pour allonger la durée de vie des jetons, un compte de service ou un compte utilisateur doit faire approuver son ID client OAuth 2.0 et le mettre en production. Pour en savoir plus, consultez la section Expiration du jeton d'actualisation.
Accès refusé
Si vous avez configuré votre écran d'autorisation OAuth dans Google Cloud et que le type d'utilisateur est défini sur Externe, une erreur "Accès refusé" s'affiche si vous tentez d'associer un compte Google non répertorié comme utilisateur test pour votre application. Veillez à ajouter le compte Google à la section Utilisateurs test de votre écran d'autorisation OAuth.
Erreur du gestionnaire des connexions partenaires (PCM)
Pour obtenir de l'aide concernant les erreurs rencontrées lors de l'accès à PCM, consultez la documentation de référence sur les erreurs de 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 pendant l'autorisation seront "non validées", sauf si la validation de l'API OAuth est terminée. En cas d'utilisation personnelle de Device Access , la validation de l'API OAuth n'est pas requise.
Le message "Google n'a pas validé cette application" peut s'afficher pendant le processus d'autorisation si le champ d'application de sdm.service
n'est pas configuré sur votre écran d'autorisation OAuth dans Google Cloud. Vous pouvez contourner cet écran en cliquant sur l'option Advanced (Avancé), puis sur Go to Project Name (non sécurisé).
Pour en savoir plus, consultez Écran de l'application non validée.
Client non valide
Lorsque vous tentez d'obtenir un jeton d'accès ou d'actualisation, une erreur "Client non valide" s'affiche si vous fournissez un code secret de 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 correspond à 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 PCM, vous risquez de rencontrer l'erreur "Requête non valide" de "Paramètre obligatoire manquant: champ d'application". Assurez-vous que 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, comme indiqué sur la page Identifiants Google Cloud.
L'URI de redirection ne correspond pas
Lorsque vous passez 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 identique à 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 projet Device Access ou le déconnecter entièrement, accédez à PCM:
https://nestservices.google.com/partnerconnections
Cette page affiche tous les services de développement tiers (Device Access projets) connectés à votre compte. Sélectionnez le projet Device Access que vous souhaitez modifier. Utilisez l'écran suivant pour modifier les autorisations selon vos besoins.
Pour ne révoquer que certaines autorisations d'un service autorisé, activez/désactivez les autorisations que vous souhaitez révoquer, puis cliquez sur la flèche de retour pour les enregistrer.
Pour déconnecter complètement un service autorisé, cliquez sur Dissocier votre compte Google afin de révoquer toutes les autorisations et tous les jetons d'accès accordés au projet pour le compte.
Si le service PCM n'affiche pas le service souhaité, vous devrez peut-être d'abord effectuer un appel de liste d'appareils.
Guide de référence rapide
Utilisez cette référence pour implémenter rapidement la procédure permettant d'autoriser unuser 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 correspondant à votre intégration spécifique, puis copiez-collez les éléments nécessaires:
1 PCM
Ouvrez le lien suivant dans un navigateur Web en remplaçant:
- project-id avec votre Device Access Project ID
- oauth2-client-id par l'ID client OAuth2 provenant 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, 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 pouvez 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 provenant de vos identifiants Google Cloud
- 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 n'est terminée qu'une fois que vous avez effectué votre premier appel devices.list
avec votre nouveau jeton d'accès. Cet appel initial met fin au 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 répertoriés pour le champ d'application spécifié pour 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 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 commande curl
suivante, en remplaçant:
- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client provenant 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" }