Durante el proceso de autorización, Google OAuth puede mostrar un error. Usa esta guía para solucionar los errores más comunes durante este proceso.
Solución de problemas
Si deseas obtener más información sobre Google OAuth, consulta Usa OAuth 2.0 para acceder a las APIs de Google.
El token de actualización sigue expirando
Es posible que los tokens de actualización dejen de funcionar después de 7 días si no se aprueba el ID de cliente. El vencimiento del token de 7 días no está relacionado con las aprobaciones comerciales ni de la zona de pruebas. Una cuenta de usuario o servicio debe obtener la aprobación del ID de cliente de OAuth 2.0 y ponerlo en producción para obtener una mayor vida útil del token. Consulta el vencimiento del token de actualización para obtener más información.
Acceso denegado
Si configuraste la pantalla de consentimiento de OAuth en Google Cloud y el Tipo de usuario es Externo, aparecerá el error “Acceso denegado” si intentas vincular la cuenta con una Cuenta de Google que no aparece como usuario de prueba de tu app. Asegúrate de agregar la Cuenta de Google a la sección Usuarios de prueba en la pantalla de consentimiento de OAuth.
Error del Administrador de conexiones de socios (PCM)
Para obtener ayuda con los errores que se encuentran cuando se accede a PCM, consulta la Referencia de errores del Administrador de conexiones de socios (PCM).
Google no verificó esta app
La API de SDM usa un alcance restringido, lo que significa que cualquier app que lo use durante la autorización quedará "sin verificar", a menos que se complete la verificación de la API de OAuth. Cuando usas Device Access para uso personal, no se requiere la verificación de la API de OAuth.
Es posible que veas una pantalla con el mensaje “Google no verificó esta app” durante el proceso de autorización, que aparece si el permiso sdm.service
no está configurado en la pantalla de consentimiento de OAuth en Google Cloud. Para omitir esta pantalla, haz clic en la opción Advanced y, luego, en Go to Project Name (no seguro).
Consulta Pantalla de app sin verificar para obtener más información.
Cliente no válido
Cuando intentes obtener un token de acceso o de actualización, aparecerá el error “Cliente no válido” si proporcionas un secreto del cliente de OAuth 2.0 incorrecto. Asegúrate de que el valor client_secret
que usas en las llamadas de acceso y token de actualización sea el mismo para el ID de cliente de OAuth 2.0 que se usa, como se encuentra en la página Credenciales de Google Cloud.
Solicitud no válida, falta el alcance obligatorio
Después de otorgar permisos en PCM, es posible que aparezca el error “Solicitud no válida” de “Falta un parámetro obligatorio: alcance”. Asegúrate de que el valor scope
que usas en las llamadas de autorización sea el mismo que estableciste para el cliente de OAuth 2.0, como se encuentra en la página Credenciales de Google Cloud.
Inconsistencia de URI de redireccionamiento
Cuando ejecutes la autorización, es posible que aparezca el error “Redireccionar la falta de coincidencia de URI”. Asegúrate de que el valor redirect_uri
que usas en las llamadas de autorización sea el mismo que estableciste para el cliente de OAuth 2.0, como se encuentra en la página Credenciales de Google Cloud.
Referencia rápida
Usa esta referencia para implementar rápidamente los pasos a fin de autorizar unuser y vincular su Cuenta de Google.
Para usar esta referencia rápida, edita cada variable de marcador de posición en las muestras de código con los valores de tu integración específica, y cópiala y pégala según sea necesario:
1 PCM
Dirige el user al vínculo PCM en tu app y reemplaza lo siguiente:
- project-id por tu Device Access Project ID
- oauth2-client-id por el ID de cliente de OAuth2 de tus credenciales de Google Cloud
- redirect-uri con un URI de redireccionamiento especificado para el ID de cliente de OAuth2 que usas
- scope por uno de tus permisos 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 código de autenticación
Después de otorgar permisos a través de PCM para el alcance seleccionado, user se debe redireccionar al URI de redireccionamiento especificado. El código de autorización se muestra como el parámetro code
en la URL, que debe tener el siguiente formato:
redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope
3 tokens de acceso
Usa el código de autorización para recuperar un token de acceso que puedes usar para llamar a la API de SDM en nombre del usuario.
Realiza una llamada POST al extremo de OAuth de Google y reemplaza lo siguiente:
- oauth2-client-id y oauth2-client-secret por el ID y el secreto de cliente de OAuth2 de tus credenciales de Google Cloud
- authorization-code por el código que recibiste en el paso anterior
- redirect-uri con un URI de redireccionamiento especificado para el ID de cliente de OAuth2 que usas
Google OAuth muestra dos tokens: un token de acceso y un token de actualización.
Solicitud
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'
Respuesta
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/scope",
"token_type": "Bearer" }
4 Llamada a la API
La autorización no estará completa hasta que realices una llamada a la API con el token de acceso de user. Esta llamada inicial finaliza el proceso de autorización y habilita eventos.
A fin de completar la autorización, debes usar una de las llamadas a la API que se indican para el alcance especificado.
sdm.service
dispositivos
Consulta la referencia de la API de devices.list
para obtener más información.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
5 tokens de actualización
Los tokens de acceso para la API de SDM solo son válidos durante 1 hora, como se indica en el parámetro expires_in
que muestra Google OAuth. Si
vence tu token de acceso, usa el token de actualización para obtener uno nuevo.
Realiza una llamada POST al extremo de OAuth de Google y reemplaza lo siguiente:
- oauth2-client-id y oauth2-client-secret por el ID y el secreto de cliente de OAuth2 de tus credenciales de Google Cloud
- refresh-token por el código que recibiste cuando obtuviste el token de acceso por primera vez
Google OAuth muestra un nuevo token de acceso.
Solicitud
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'
Respuesta
{"access_token": "new-access-token",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/scope",
"token_type": "Bearer" }