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:
- project-id avec votre Device Access Project ID
- oauth2-client-id par l'ID client OAuth2 provenant de vos identifiants Google Cloud
- redirect-uri par un URI de redirection spécifié pour l'ID client OAuth2 que vous utilisez.
- 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:
- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client provenant de vos identifiants Google Cloud
- authorization-code par le code reçu à l'étape précédente
- 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:
- oauth2-client-id et oauth2-client-secret par l'ID client OAuth2 et le code secret du client provenant de vos identifiants Google Cloud
- 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" }