Autoriza una cuenta

Una vez creados tus proyectos de Google Cloud y Acceso a dispositivos, puedes autorizar una cuenta de Google con un dispositivo Google Nest compatible para la API de SDM.

Para ver estructuras y dispositivos, debes vincular una Cuenta de Google a tu Device Access con la PCM. PCM permite que user otorgue permiso permite que developeracceda a sus estructuras y datos del dispositivo.

En esta guía, actúas como user y developer.

  1. Abre el siguiente vínculo en un navegador web y reemplaza lo siguiente:

    1. project-id con tu Device Access Project ID
    2. oauth2-client-id con el ID de cliente de OAuth2 de tus credenciales de Google Cloud
    https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service
    
  2. Si recientemente accediste a Google con varias cuentas, es posible que estés que aparece una pantalla inicial Elige una cuenta con una lista de tus Cuentas de Google. Si es así, selecciona la Cuenta de Google vinculada a los dispositivos deseas autorizar para Device Access.
  3. La pantalla de Permisos de Google Nest es el PCM en sí. Aquí puedes otorgar permisos de estructura y dispositivo. Activa el permisos de tu casa (paso 1) y cualquier dispositivo en esa casa que se compatible con la API de SDM (Paso 2) y, luego, haz clic en Next.
  4. En la pantalla Elige una cuenta para continuar con Nombre del proyecto, donde Nombre del proyecto es el nombre de tu proyecto de Google Cloud. Selecciona la cuenta de Google que deseas autorizar para la API de SDM. Usa la misma Cuenta de Google que antes.
  5. Después de elegir una cuenta, es posible que aparezca una pantalla de advertencia que te diga lo siguiente: Google no verificó esta app. Si es así, haz clic en el ícono Avanzado y, luego, haz clic en Ir a Nombre del proyecto (no seguro). Consulta Google no verificó esta app para obtener más información información.
  6. En la pantalla Otorgar permiso a Nombre del proyecto, haz clic en Permitir para otorgar el permiso del proyecto para acceder a tu Cuenta de Google.
  7. En la pantalla Confirm your choices, asegúrate de que los permisos que deseas otorgar estén marcados y haz clic en Allow para confirmar.
  8. El sistema lo redireccionará a https://www.google.com. El código de autorización se muestra como el parámetro code en la URL. que deben tener el siguiente formato:

    https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
    
  9. Copia el código de autorización.

Obtén un 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.

  1. Abre una terminal y ejecuta el siguiente comando curl. Para ello, reemplaza lo siguiente:

    1. oauth2-client-id y oauth2-client-secret con el ID de cliente y el secreto de cliente de tus credenciales de Google Cloud
    2. authorization-code por el código que recibiste en el paso anterior
    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=https://www.google.com'
    
  2. Google OAuth muestra dos tokens, uno de acceso y uno token de actualización.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    Copia ambos valores. El token de acceso se usa para llamar a la API de SDM, y el token de actualización se usa para obtener un token de acceso nuevo.

Realiza una llamada a la lista de dispositivos

La autorización no se completa hasta que realizas tu primera llamada a devices.list con tu nuevo token de acceso. Esta llamada inicial finaliza el proceso de autorización y habilita los eventos si ya configuraste una suscripción a Pub/Sub.

Usa curl para realizar esta llamada al extremo devices:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Una llamada correcta muestra una lista de dispositivos vinculados a tu proyecto Device Access. Cada dispositivo tiene su propia lista única de atributos disponibles:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

Cómo usar un token 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.

El comando es similar al del token de acceso, excepto que usas un grant_type diferente.

  1. Abre una terminal y ejecuta siguiente comando curl, en el que se reemplazará lo siguiente:

    1. oauth2-client-id y oauth2-client-secret con el ID de cliente de OAuth2 y el secreto del cliente de tu Google Cloud Credenciales
    2. refresh-token por el código que recibiste cuando obtuviste el acceso inicialmente token.
    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'
    
  2. Google OAuth muestra un nuevo token de acceso.

    {
      "access_token": "new-access-token",
      "expires_in": 3599,
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }

Soluciona 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 vencendo

Los tokens de actualización pueden dejar de funcionar después de 7 días si no se aprueba el ID de cliente. una posible causa. El vencimiento del token de 7 días no se relaciona con las aprobaciones comerciales ni de Sandbox. Una cuenta de usuario o servicio debe obtener su OAuth Se aprobó el ID de cliente 2.0 y se pondrá en producción para obtener una mayor vida útil de los tokens. 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)

Para obtener ayuda con cualquier error encontrado al acceder PCM, consulta Administrador de conexiones de socios (PCM) Referencia de error.

Google no verificó esta app

La API de SDM usa un alcance restringido, lo que significa que las apps que usen este permiso 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 el mensaje "Google no verificó esta app". pantalla durante el período de proceso, 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 App sin verificar pantalla 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 la El valor de scope que usas en las llamadas de autorización es el mismo que estableciste para el cliente de OAuth 2.0. como se encuentra en tu cuenta de Google Cloud Credenciales .

El URI de redireccionamiento no coincide

Cuando realices la autorización, es posible que encuentres un error de “No coincide 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.

Modifica los permisos de la cuenta

Para modificar los permisos otorgados a un proyecto Device Access o desconectarlo ve a PCM:

https://nestservices.google.com/partnerconnections

En esta página, se muestran todos los servicios de desarrolladores externos (proyectosDevice Access ) conectados a tu cuenta. Selecciona el proyecto Device Access que deseas cambio. Usa la siguiente pantalla para modificar los permisos según lo desees.

Para revocar solo permisos específicos de un servicio autorizado, activa o desactiva los permisos que quieras revocar y haz clic en la flecha hacia atrás para guardarlos.

Para desconectar un servicio autorizado por completo, haz clic en Desvincular tu cuenta de Google Account para revocar todos los permisos y tokens de acceso al que se otorgó el proyecto otorgada para la cuenta.

Si el PCM no muestra el servicio deseado, es posible que debas hacer una llamada a la lista de dispositivos primero.

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

Abre el siguiente vínculo en un navegador web 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
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service

2 códigos de autorización

Se te redireccionará a https://www.google.com. El código de autorización se muestra como el parámetro code en la URL, que debe tener el siguiente formato:

https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service

3 Token de acceso

Usar el código de autorización para recuperar un token de acceso que que puedes usar para llamar a la API de SDM.

Abre una terminal y ejecuta el siguiente comando curl. Para ello, 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

Google OAuth devuelve dos tokens, uno de acceso y uno 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=https://www.google.com'

Respuesta

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/sdm.service",
  "token_type": "Bearer"
}

4 Llamada a la API

La autorización no se completa hasta que realizas tu primera llamada a devices.list con tu nuevo token de acceso. Esta llamada inicial finaliza el proceso de autorización y habilita eventos si ya configuraste una suscripción a Pub/Sub.

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 devices.list la referencia de la API 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 se válido durante 1 hora, como se indica en el parámetro expires_in que muestra Google OAuth. Si el token de acceso vence, usa el token de actualización para obtener uno nuevo.

Abre una terminal y ejecuta siguiente comando curl, en el que se reemplazará lo siguiente:

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

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/sdm.service",
  "token_type": "Bearer"
}