Erreurs d'autorisation

Au cours du processus d'autorisation, Google OAuth peut renvoyer une erreur. Utilisez ce guide pour résoudre les erreurs les plus courantes au cours de ce processus.

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.

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

Redirigez user vers le lien PCM de votre application en remplaçant:

  1. project-id avec votre Device Access Project ID
  2. oauth2-client-id par l'ID client OAuth2 provenant de vos identifiants Google Cloud
  3. redirect-uri par un URI de redirection spécifié pour l'ID client OAuth2 que vous utilisez.
  4. scope par l'un de vos niveaux d'accès disponibles
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 Code d'autorisation

Après avoir accordé les autorisations via PCM pour le champ d'application sélectionné, user doit être redirigé vers l'URI de redirection spécifié. Le code d'autorisation est renvoyé en tant que paramètre code dans l'URL, qui doit être au format suivant:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

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 SMD au nom de l'utilisateur.

Envoyez un appel POST au point de terminaison OAuth de Google, en remplaçant:

  1. oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client provenant de vos identifiants Google Cloud
  2. authorization-code par le code reçu à l'étape précédente
  3. redirect-uri par un URI de redirection spécifié pour l'ID client OAuth2 que vous utilisez.

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=redirect-uri'

Réponse

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 Appel d'API

L'autorisation n'est terminée qu'une fois que vous avez effectué un appel d'API avec le jeton d'accès de user. Cet appel initial met fin au processus d'autorisation et active les événements.

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.

Envoyez un appel POST au point de terminaison OAuth de Google, en remplaçant:

  1. oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client provenant de vos identifiants Google Cloud
  2. 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/scope",
  "token_type": "Bearer"
}