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 OAuth Google, consultez Utiliser OAuth 2.0 pour accéder aux API Google.
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 plus longue des jetons, 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é 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 essayez d'associer un compte à un compte Google qui n'est pas listé en tant qu'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 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. Lorsque vous utilisez Device Access à des fins personnelles, la vérification de l'API OAuth n'est pas requise.
L'écran "Google n'a pas validé cette application" peut s'afficher pendant le processus d'autorisation. Il apparaît si le champ d'application sdm.service
n'est pas configuré sur votre écran d'autorisation OAuth dans Google Cloud. Pour contourner cet écran, cliquez sur l'option Avancé, puis sur Accéder à Nom du projet (non sécurisé).
Pour en savoir plus, consultez la section Écran de l'application non validée.
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 identique à celle que vous avez définie pour le client OAuth 2.0, comme indiqué sur la page Identifiants 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 Google Cloud.
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 aide-mémoire, modifiez chaque variable d'espace réservé dans les exemples de code avec les valeurs de votre intégration spécifique, puis copiez-collez selon vos besoins:
Dirigez le user vers le lien PCM dans votre application, en remplaçant:
- project-id par votre Device Access Project ID
- oauth2-client-id avec l'ID client OAuth2 de vos identifiants Google Cloud
- redirect-uri avec un URI de redirection spécifié pour l'ID client OAuth2 que vous utilisez
- scope avec 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
Une fois les autorisations accordées via PCM pour le champ d'application sélectionné, l' 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 se présenter comme suit:
redirect-uri ?code=authorization-code &scope=https://www.googleapis.com/auth/ scope
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:
- oauth2-client-id et oauth2-client-secret avec l'ID client et le secret client OAuth2 de vos identifiants Google Cloud
- authorization-code par le code que vous avez reçu à l'étape précédente.
- redirect-uri avec 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.
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 '
{"access_token": "
access-token ","expires_in": 3599,
"refresh_token": "
refresh-token ","scope": "https://www.googleapis.com/auth/
scope ","token_type": "Bearer" }
L'autorisation n'est pas terminée tant que vous n'avez pas effectué d'appel d'API avec le jeton d'accès de user. 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é pour finaliser l'autorisation.
sdm.service
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 '
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.
Effectuez un appel POST au point de terminaison OAuth de Google, en remplaçant:
- oauth2-client-id et oauth2-client-secret avec l'ID client et le secret client OAuth2 de vos identifiants Google Cloud
- 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.
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'
{"access_token": "
new-access-token ","expires_in": 3599,
"scope": "https://www.googleapis.com/auth/
scope ","token_type": "Bearer" }