Errores de autorización

Durante el proceso de autorización, es posible que Google OAuth muestre un error. Usa esta guía para solucionar los errores más comunes durante este proceso.

Solución de problemas

Para obtener más información sobre OAuth de Google, consulta Usa OAuth 2.0 para acceder a las APIs de Google.

El token de actualización sigue venciendo

Una posible causa es que los tokens de actualización pueden dejar 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 se relaciona con las aprobaciones comerciales ni de la zona de pruebas. Una cuenta de servicio o de usuario debe obtener la aprobación de su ID de cliente de OAuth 2.0 y ponerlo en producción para obtener una vida útil del token más larga. Consulta Vencimiento del token de actualización para obtener más información.

Acceso denegado

Si configuraste tu pantalla de consentimiento de OAuth en Google Cloud y el tipo de usuario es Externo, recibirás un error de “Acceso denegado” si intentas vincular una cuenta con una Cuenta de Google que no aparece como usuario de prueba en tu app. Asegúrate de agregar la Cuenta de Google a la sección Usuarios de prueba en tu pantalla de consentimiento de OAuth.

Error del Administrador de conexiones de socios (PCM)

Si necesitas ayuda con los errores que se producen cuando accedes al 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 las apps que usen este alcance durante la autorización no se verificarán, 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 la pantalla "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 (unsafe).

Consulta la Pantalla de la app no verificada para obtener más información.

Cliente no válido

Cuando intentes obtener un token de acceso o de actualización, recibirás un error de "Cliente no válido" si proporcionas un secreto de cliente de OAuth 2.0 incorrecto. Asegúrate de que el valor de client_secret que usas en las llamadas de token de acceso y actualización sea el del 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 permiso obligatorio

Después de otorgar permisos en PCM, es posible que encuentres un error de "Solicitud no válida" que indique que falta el parámetro obligatorio "alcance". Asegúrate de que el valor de scope que usas en las llamadas de autorización sea el mismo que configuraste para el cliente de OAuth 2.0, como se muestra en la página Credenciales de Google Cloud.

Los URI de redireccionamiento no coinciden

Cuando realices la autorización, es posible que encuentres un error de “Discrepancia en el URI de redireccionamiento”. Asegúrate de que el valor de redirect_uri que usas en las llamadas de autorización sea el mismo que configuraste para el cliente de OAuth 2.0, como se muestra en la página Credenciales de Google Cloud.

Referencia rápida

Usa esta referencia para implementar rápidamente los pasos para 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ópialas y pégalas según sea necesario:

1 PCM

Dirige el user al vínculo de PCM en tu app y reemplaza lo siguiente:

  1. project-id por tu Device Access Project ID
  2. oauth2-client-id con el ID de cliente de OAuth2 de tus credenciales de Google Cloud
  3. redirect-uri con un URI de redireccionamiento especificado para el ID de cliente de OAuth2 que usas
  4. scope con uno de tus alcances 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 que seleccionaste, el user debe redireccionarse 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 Token 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:

  1. oauth2-client-id y oauth2-client-secret con el ID de cliente y el secreto de cliente de OAuth2 de tus credenciales de Google Cloud
  2. authorization-code por el código que recibiste en el paso anterior
  3. 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 se completa hasta que realizas una llamada a la API con el token de acceso de user. Esta llamada inicial finaliza el proceso de autorización y habilita los eventos.

Debes usar una de las llamadas a la API que se enumeran para el alcance especificado para completar la autorización.

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 OAuth de Google. Si el token de acceso vence, usa el token de actualización para obtener uno nuevo.

Realiza una llamada POST al extremo de OAuth de Google y reemplaza lo siguiente:

  1. oauth2-client-id y oauth2-client-secret con el ID de cliente y el secreto de cliente de OAuth2 de tus credenciales de Google Cloud
  2. refresh-token con el código que recibiste cuando obtuviste el token de acceso inicialmente.

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