Autorización

LosDeveloperpueden usar la API de SDM para ver y administrar los dispositivos Google Nest en nombre de los user. La API de SDM valida que el objeto user administre los dispositivos a los que se accede, que el objeto user haya dado su consentimiento para que el objetodeveloper lea o escriba los rasgos de cada dispositivo y que el objetodeveloper se haya incluido en la lista blanca para acceder a cada rasgo. user

Para usar la API de SDM para la administración de dispositivos, eldeveloper primero debe estar autorizado por el user.

Para obtener una explicación del proceso de autorización, consulta la página Autoriza una cuenta de la guía de inicio rápido de Device Access .

Para obtener ayuda con la solución de errores de autorización, consulta Errores de autorización.

Flujo de OAuth

La API de SDM usa un flujo de OAuth de Google de tres segmentos para lauser autorización:

  • Cuando a user desea autorizar a developer para administrar dispositivos Nest, el developer envía eluser al PCM, donde el useraccede a su Cuenta de Google.
  • El user selecciona los permisos que se otorgarán para el developeren el PCM.
  • El user proporciona consentimiento a través de OAuth, lo que otorga aldeveloper un código de autorización.
  • El developer usa el código de autorización para recuperar un token de acceso.
  • El developer usa el token de acceso con llamadas a la API de SDM para la administración de dispositivos.

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

Administrador de conexiones de socios (PCM)

La API de SDM proporciona el PCM. Es una vista que enumera todas las estructuras, los dispositivos y las opciones de acceso que eluser puede otorgar al developer. El userelige a qué otorgar acceso durante el proceso de autorización y conserva el control de ese acceso.

Las opciones seleccionadas en PCM se asignan a grupos de rasgos, que son colecciones de rasgos a los que se les otorgará acceso a developer . Algunos grupos de rasgos están vinculados entre sí, según el tipo de integración que ofrece eldeveloper al user, y el userdebe otorgar permisos para esos grupos de rasgos vinculados para habilitar esa integración. De lo contrario, el usuario puede otorgar permisos para grupos de rasgos individuales y no vinculados según lo desee.

Habilita PCM

Para habilitar la vista de PCM para un user, reemplaza el extremo estándar de OAuth 2.0 de la API de Google por este nuevo extremo de OAuth para la solicitud de autorización:

https://nestservices.google.com/partnerconnections/project-id/auth

Usa estos parámetros en la URL:

Parámetro Descripción
redirect_uri Es el URI al que se redirecciona el user después de una autorización exitosa.
client_id Es el ID de cliente de OAuth 2.0 de tu proyecto de Google Cloud. Asegúrate de que sea el mismo asociado a tu ID de Project . Ten en cuenta que un ID de cliente de OAuth debe ser válido y único para un project, y no se puede compartir con otros projects. project
access_type Valor que se usará: offline
prompt Valor que se usará: consent
response_type Valor para usar: code
Se espera un código de autorización a cambio.
scope Valor para usar: https://www.googleapis.com/auth/sdm.service
Es el alcance de la API de SDM.
state Opcional. Es un valor opaco que usa el cliente de developer para mantener el estado entre la solicitud y la devolución de llamada.

Ejemplo de URL de PCM:

https://nestservices.google.com/partnerconnections/
  2f6989ca-c756-4625-8cdc-d5b1edfb2dcd/auth?
  redirect_uri=https://www.example.com/api/link/M258KP8OWYZDVQ&
  client_id=418235700063-sdkiav89orn5r1nvrcr5t210qqjimq8l.apps.googleusercontent.com&
  access_type=offline&
  prompt=consent&
  response_type=code&
  scope=https://www.googleapis.com/auth/sdm.service

Después de que user otorga permiso, se devuelve un código de autorización como el parámetrocodeen el URI de redireccionamiento. Usa este código para obtener un token de acceso.

Para obtener ayuda con los errores que se producen cuando se accede al PCM, consulta la Referencia de errores de Partner Connections Manager (PCM).

Agrega PCM a tu app

En tu app, agrega la vista de PCM con esta URL:

https://nestservices.google.com/partnerconnections

Cuando el objeto user está conectado, esta página muestra todos sus objetosDevice Access developervinculados, así como una lista de todas las estructuras y dispositivos con botones de activación para otorgar y revocar permisos. En esta página, el user también puede desconectar una conexión de socio para cada socio.

Apps sin verificar

La API de SDM usa un alcance restringido, lo que significa que todas las apps que usen este alcance durante la autorización se considerarán "sin verificar" a menos que se complete la Verificación de la API de OAuth. Cuando se usa 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 tu pantalla de consentimiento de OAuth en Google Cloud. Para omitir esta pantalla, haz clic en la opción Avanzado y, luego, en Ir a Nombre del proyecto (no seguro).

Consulta la pantalla de la app sin verificar para obtener más información.

Tokens de acceso

Todas las llamadas a la API de SDM para administrar estructuras y dispositivos autorizados deben usar el token de acceso único queuser le otorga a developer durante la autorización. Los tokens de acceso son de corta duración y deben actualizarse periódicamente para garantizar el acceso continuo.

Si a user revoca developer el acceso a una estructura o un dispositivo más adelante, el token de acceso vencerá de inmediato y no se podrá actualizar, y eldeveloper ya no podrá llamar a la API de SDM en nombre de ese user.

Cómo revocar la autorización de la cuenta

Existen varias formas de anular la autorización de una Cuenta de Google. El método preferido es que el usuario utilice el Administrador de conexiones de socios (PCM) para modificar los permisos de la cuenta. Consulta Cómo modificar los permisos de la cuenta para obtener más información. Un token de acceso también se puede revocar con los siguientes métodos:

  1. El usuario puede revocar el acceso en https://myaccount.google.com/permissions.

  2. El desarrollador puede pasar el token de acceso al extremo https://oauth2.googleapis.com/revoke. Para obtener más información sobre la revocación de tokens y OAuth de Google, consulta Revoca un token.

Webviews incorporadas

Una nueva política de navegadores seguros prohíbe las solicitudes de OAuth de Google en bibliotecas de navegadores incorporados, a las que comúnmente se hace referencia como WebView incorporadas. Se bloquearán todas las vistas web incorporadas. Las bibliotecas de WebView incorporadas son problemáticas porque permiten que un desarrollador malicioso intercepte y altere las comunicaciones entre Google y sus usuarios. Los componentes WebView integrados no solo afectan la seguridad de la cuenta, sino que también podrían afectar la usabilidad de tu aplicación.

Si esta política te afecta, consulta el artículo de asistencia Próximos cambios de seguridad en el extremo de autorización de OAuth 2.0 de Google en WebView integradas.