Autoriser un compte

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.

Pour afficher les structures et les appareils, vous devez associer un compte Google à votre projetDevice Access à l'aide de la PCM. PCM permet au user d'accorder l'autorisation permettant aux developerd'accéder à leurs structures et à leurs données d'appareil.

Dans ce guide, vous jouez le rôle de user et de developer.

  1. Ouvrir le lien suivant dans un navigateur Web en remplaçant:

    1. project-id par votre Device Access Project ID
    2. 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. 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 c'est le cas, sélectionnez le compte Google associé aux appareils que vous souhaitez autoriser pour Device Access.
  3. L'écran Autorisations Google Nest est le PCM lui-même. Vous pouvez y accorder des autorisations de structure et d'appareil. Activez la 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.
  4. 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 l'API SDM. Utilisez le même compte Google qu'auparavant.
  5. Après avoir choisi un compte, un écran d'avertissement peut s'afficher indiquant que Google n'a pas validé cette application. Si c'est le cas, pour continuer, cliquez sur l'option Avancé, puis sur Accéder à Nom du projet (non sécurisé). Pour en savoir plus, consultez la page Google n'a pas validé cette application.
  6. Sur l'écran Accorder l'autorisation Nom du projet, cliquez sur Autoriser pour accorder l'autorisation du projet à accéder à votre compte Google.
  7. Sur l'écran Confirmez vos choix, vérifiez que les autorisations que vous souhaitez à accorder sont cochées, puis cliquez sur Autoriser pour confirmer.
  8. 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
    
  9. 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.

  1. Ouvrez un terminal et exécutez la commande curl suivante, en remplaçant :

    1. oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
    2. 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'
    
  2. Google OAuth renvoie deux jetons : un jeton d'accès et un jeton d'actualisation.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    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 à la liste des appareils

L'autorisation n'est pas terminée tant que vous n'avez pas effectué votre premier appel 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, à la différence que vous utilisez un grant_type différent.

  1. Ouvrez un terminal et exécutez la commande curl suivante, en remplaçant :

    1. oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
    2. refresh-token avec le code que vous avez reçu lorsque vous avez obtenu le jeton d'accès pour la première fois.
    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'
    
  2. 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 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é. L'expiration du jeton de sept jours n'est pas liée aux approbations commerciales ou dans l'environnement Sandbox. Pour obtenir une durée de vie des jetons plus longue, un compte de service ou d'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é 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 en cas d'erreur lors de l'accès à PCM, consultez la documentation de référence sur les erreurs du Partner Connections Manager (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 effectué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. Pour contourner cet écran, cliquez sur l'option Advanced (Avancé), puis sur Go to Project Name (unsafe) (Accéder à Project Name (Nom du projet) (non sécurisé)).

Voir Application non validée écran pour en savoir plus.

Client non valide

Lorsque vous essayez d'obtenir un jeton d'accès ou d'actualisation, vous recevez une erreur "Client non valide" si vous fournissez un secret client OAuth 2.0 incorrect. Assurez-vous que la valeur client_secret que vous utilisez dans les appels de jetons d'accès et d'actualisation correspond à celle de l'ID client OAuth 2.0 utilisé, comme indiqué sur la page Identifiants Google Cloud.

Demande non valide, autorisation requise manquante

Après avoir accordé des autorisations dans PCM, vous pouvez rencontrer une erreur "Requête non valide" avec le message "Paramètre obligatoire 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.

L'URI de redirection ne correspond pas

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 projet Device Access ou le dissocier complètement, accédez à 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 projet Device Access que vous souhaitez modifier. Utilisez l'écran suivant pour modifier les autorisations comme vous le souhaitez.

Pour ne révoquer que des autorisations spécifiques pour un service autorisé, activez les autorisations que vous souhaitez révoquer, puis cliquez sur la flèche de retour pour enregistrer.

Pour dissocier 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 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 référence pour implémenter rapidement les étapes 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 propres à votre intégration, puis copiez-collez si nécessaire:

1 PCM

Ouvrir le lien suivant dans un navigateur Web en remplaçant:

  1. project-id par votre Device Access Project ID
  2. oauth2-client-id avec 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 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 curl suivante, en remplaçant :

  1. oauth2-client-id et oauth2-client-secret avec l'ID et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
  2. 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 pas terminée tant que vous n'avez pas effectué votre premier appel 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

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 de 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 la commande curl suivante, en remplaçant:

  1. oauth2-client-id et oauth2-client-secret avec l'ID client et le secret client OAuth2 de vos identifiants Google Cloud
  2. refresh-token avec le code que vous avez reçu lorsque vous avez obtenu le jeton d'accès pour la première fois.

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"
}