Erreurs d'autorisation

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

Dépannage

Pour en savoir plus sur Google OAuth, consultez la page 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 bénéficier d'une durée de vie plus longue des jetons. Pour en savoir plus, consultez la section 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 Google qui n'est pas répertorié comme 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 section Référence des erreurs du gestionnaire des connexions partenaires (PCM).

Google n'a pas validé cette application

L'API SDM utilise un champ d'application limité, 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 à des fins personnelles, 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 contourner cet écran en cliquant sur l'option Avancé , puis sur Accéder à Nom du projet (non sécurisé).

Pour en savoir plus, consultez la section É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 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 de 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 de Google Cloud.

Légende

Utilisez cette référence pour implémenter 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

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

  1. project-id par votre Device Access Project ID
  2. oauth2-client-id par l'ID client OAuth2 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 champs d'application 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é des autorisations via le PCM pour le champ d'application sélectionné, le 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 SDM au nom de l'utilisateur.

Effectuez 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 client de vos identifiants Google Cloud
  2. authorization-code par le code que vous avez 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 pas terminée tant que vous n'avez pas effectué d'appel d'API avec le user's jeton d'accès. Cet appel initial termine le processus d'autorisation et active les événements.

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.

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