Autoriser un compte

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.

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.

  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 tel est le cas, sélectionnez le compte Google associé aux appareils que vous souhaitez autoriser pour Device Access.
  3. 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.
  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 API SDM. Utilisez le même compte Google qu'auparavant.
  5. 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.
  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 à 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 suivante : en remplaçant la commande curl suivante:

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

  1. 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 et le code secret du client OAuth2 provenant de votre Google Cloud Identifiants
    2. 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'
    
  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é 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:

  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. 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:

  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 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:

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