Flujo de dispositivos de OAuth 2.0 para la integración de IoT
Para integrar aplicaciones que se ejecutan en dispositivos con funciones de ingreso o visualización limitadas, como Smart TVs, electrodomĆ©sticos y otros dispositivos IoT, utilice el flujo de dispositivos de OAuth 2.0. Las aplicaciones de lĆnea de comandos tambiĆ©n pueden utilizar este flujo. Los usuarios pueden conectar estas aplicaciones con Salesforce accediendo a un navegador en un dispositivo con capacidades de entrada mĆ”s avanzadas, como una computadora de escritorio o un dispositivo móvil.
Ediciones necesarias
| Disponible en: Salesforce Classic y Lightning Experience |
| Disponible en: todas las ediciones |
Consulte Las nuevas aplicaciones conectadas ya no se pueden crear en Spring ā26 para obtener mĆ”s detalles.
Por ejemplo, un usuario utiliza un dispositivo bluetooth para controlar las luces de casa mientras estÔ fuera cenando. Puede crear una aplicación conectada para el dispositivo bluetooth para habilitar este flujo.
- El usuario abre la aplicación bluetooth en su dispositivo móvil y hace clic en Encender las luces.
- La aplicación conectada publica una solicitud en el extremo de tokens de Salesforce.
- Salesforce verifica la solicitud y devuelve un código de usuario legible, una URL de verificación y un código de dispositivo.
- La aplicación bluetooth muestra el código de dispositivo e indica al usuario que lo ingrese en la URL de verificación especificada. La aplicación también empieza a sondear al extremo de tokens de Salesforce esperando autorización.
- El usuario hace clic en el vĆnculo a la URL de verificación e ingresa el código.
- El usuario autoriza a continuación a la aplicación para acceder a sus datos protegidos, en este caso la ubicación de la casa.
- Salesforce envĆa un token de acceso y actualización a la aplicación conectada.
- La aplicación bluetooth puede acceder a la ubicación de la casa del usuario y encender las luces.
Vayamos por los pasos de este flujo de autorización.
- Autorización de solicitudes de dispositivos
- Salesforce devuelve códigos de verificación
- El usuario autentica y autoriza mientras el dispositivo consulta el extremo del token
- Salesforce otorga un token de acceso
Autorización de solicitudes de dispositivos
Para iniciar el flujo de autorización, el dispositivo, a través de una aplicación conectada, publica una solicitud de autorización en el extremo de tokens de Salesforce.
Por ejemplo:
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded
response_type=device_code&
client_id=3MVG9PhR6g6B7ps7TTI4cP7Mppg3l7tu.āMRAYULyVqcmA9hGLpHiiS.Q7rO9yjlmffiBUM6tFpYAlXEkRjHb9&scope=apiIncluya estos parĆ”metros en la solicitud.
| ParÔmetro | Descripción |
|---|---|
Request Header
|
El encabezado de la solicitud contiene esta información:
|
response_type
|
El tipo de otorgamiento de OAuth 2.0 que solicita la aplicación conectada. El valor para este flujo debe ser device_code. |
client_id
|
Haga clic en la clave de consumidor de la aplicación conectada. Para acceder a la clave de consumidor, desde el Gestor de aplicaciones, busque la aplicación conectada y seleccione Ver desde el menú desplegable. A continuación haga clic en Gestionar detalles de consumidor. A veces se le solicita verificar su identidad antes de poder ver la clave de consumidor. |
scope
|
Opcional. Los permisos que definen el tipo de recursos protegidos a los que la aplicación conectada puede acceder. Usted asigna Ć”mbitos a una aplicación conectada cuando la construye, y se incluyen con los tokens de OAuth durante el flujo de autorización. Si no incluye este parĆ”metro, se solicitan todos los Ć”mbitos asignados a la aplicación conectada. Los Ć”mbitos que se hayan pasado en este parĆ”metro deben ser un subconjunto de los Ć”mbitos registrados. Para consultar los parĆ”metros vĆ”lidos, vea Ćmbitos de OAuth. |
Salesforce devuelve códigos de verificación
Después de verificar la solicitud, Salesforce devuelve un código de usuario legible, una URL de verificación y un código de dispositivo.
Esta respuesta de muestra devuelve estos valores con un código 200 de operación correcta.
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"device_code":"M01WRzlQaFI2ZzZCN3BzN1RUSTRjUDdNcHBnM2w3dHUuTVJBWVVMeVZxY21BOWhHTHBIaWlTLlE3ckā85eWpsbWZmaUJVTTZ0RnBZQWxYRWtSakhiOTsxMC4yMi4zNC45MjsxNDc3Njc0NDg3NTA1O1gxRDlTRUVU",
"user_code":"X1D9SEET",
"verification_uri":"https://acme.my.salesforce.com/setup/connect",
"interval":5
}
Los siguientes parƔmetros se incluyen en la respuesta.
| ParÔmetro | Descripción |
|---|---|
Response Header
|
El encabezado de respuesta contiene esta información:
|
device_code
|
Un código de verificación para el dispositivo. Este código es vÔlido durante 10 minutos. El código puede incluir letras mayúsculas, minúsculas y números. Salesforce puede cambiar el formato de los códigos de dispositivos en cualquier momento. Cuando desarrolle integraciones que utilizan este flujo, no realice suposiciones acerca del formato y la longitud del código del dispositivo. |
user_code
|
Un código de verificación para el usuario final, enviado como un código alfanumĆ©rico de 8 dĆgitos. El usuario debe ingresar este código en la URL de verificación. Este código es vĆ”lido durante 10 minutos. |
verification_uri
|
La URL de verificación del usuario final en el servidor de autorización. El usuario debe ingresar el código de usuario en esta URL de verificación. Con la verificación a travĆ©s de una URL de inicio de sesión de Mi dominio o URL de sitio de Experience Cloud, verification_uri refleja la URL que inició el flujo. Por ejemplo, si el dispositivo envĆa una solicitud de token a https://acme.my.salesforce.com/services/oauth2/token, la verification_uri es https://acme.my.salesforce.com/setup/connect. Opcionalmente, puede agregar el parĆ”metro |
interval
|
El nĆŗmero mĆnimo de segundos que recomendamos esperar entre solicitudes de consulta en el extremo del token. |
El usuario autentica y autoriza mientras el dispositivo consulta el extremo del token
La aplicación del cliente en el dispositivo ordena al usuario visitar la URL de verificación en un equipo o dispositivos móviles e ingresar el código de usuario. El usuario abre el navegador, navega a la URL de verificación e ingresa el código mostrado en el dispositivo. Si el código es vÔlido, el usuario inicia sesión si es necesario. Después de un inicio de sesión correcto, el usuario permite al dispositivo acceder a datos de cuentas de Salesforce.
Mientras tanto, después de mostrar el código de usuario y la URL de verificación, la aplicación del cliente en el dispositivo consulta el extremo del token de forma repetida. La consulta comprueba si el usuario autorizó el acceso y si el servidor de autorización emitió el token de acceso.
Este es un ejemplo de una solicitud de consulta:
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded
grant_type=device&
client_id=3MVG9PhR6g6B7ps7TTI4cP7Mppg3l7tu.MRAYULyVqcmA9hGLpHiiS.āQ7rO9yjlmffiBUM6tFpYAlXEkRjHb9&code=M01WRzlQaFI2ZzZCN3BzN1RUSTRjUDdNcHBnM2w3dHUuāTVJBWVVMeVZxY21BOWhHTHBIaWlTLlE3ck85eWpsbWZmaUJVTTZ0RnBZQWxYRWtSakhiOTsxMC4yMi4zNC45MjsxNDc3Nājc0NDg3NTA1O1gxRDlTRUVULa solicitud de sondeo contiene estos parĆ”metros, ademĆ”s del encabezado.
| ParÔmetro | Descripción |
|---|---|
grant_type
|
El valor debe ser device para este flujo. |
client_id
|
Haga clic en la clave de consumidor de la aplicación conectada. Para acceder a la clave de consumidor, desde el Gestor de aplicaciones, busque la aplicación conectada y seleccione Ver desde el menú desplegable. A continuación haga clic en Gestionar detalles de consumidor. A veces se le solicita verificar su identidad antes de poder ver la clave de consumidor. |
code
|
El servidor de autorización crea un código de autorización, que es un token efĆmero que pasa al cliente despuĆ©s de una autenticación correcta. El cliente envĆa el código de autorización al servidor de autorización para obtener un token de acceso y, opcionalmente, un token de actualización. |
Salesforce otorga un token de acceso
Si el usuario autorizó el acceso, Salesforce responde con un mensaje de operación correcta y el token de acceso junto con otros valores. Por ejemplo:
{
"access_token": "00DD00000008Uw2!ARkAQGppKf6n.VwG.EnFSvi731qWh.7vKfaJjL7h49yutIC84gAsxMārqcE81GjpTjQbDLkytl2ZwosNbIJwUS0X8ahiILj3e"
"refresh_token": "your token here"
"signature": "hJuYICd2IHsjyTcFqTYiOr8THmgDmrcjgWaMp13X6dY="
"scope": "api"
"instance_url": "https://yourInstance.salesforce.com"
"id": "https://login.salesforce.com/id/00DD00000008Uw2MAE/005D0000001cAGmIAM"
"token_type": "Bearer"
"issued_at": "1477674717112"
}Estos parƔmetros se incluyen en la ejemplo respuesta.
| ParÔmetro | Descripción |
|---|---|
access_token
|
Token de OAuth que una aplicación conectada utiliza para solicitar el acceso a un recurso protegido en nombre de una aplicación cliente. Pueden acompañar permisos adicionales en la forma de Ômbitos al token de acceso. |
refresh_token
|
Token obtenido del servidor web, usuario-agente o flujo de token de aplicación hĆbrida. Se trata de un valor secreto. Tome las medidas apropiadas para protegerlo. Este parĆ”metro solo se devuelve si su aplicación conectada se configura con un Ć”mbito refresh_token. |
signature
|
Firma HMAC-SHA256 con codificación Base64 firmada con client_secret. La firma puede incluir el Id. concatenado y issued_at value, que puede utilizar para verificar que la URL de identidad no cambió desde que la envió el servidor. |
scope
|
Los Ć”mbitos asociados con el token de acceso. Los Ć”mbitos definen mĆ”s el tipo de recursos protegidos a los que el cliente puede acceder. Usted asigna Ć”mbitos a una aplicación conectada cuando la construye, y se incluyen con los tokens de OAuth durante el flujo de autorización. Para consultar los parĆ”metros vĆ”lidos, vea Ćmbitos de OAuth. |
instance_url
|
Una URL que indica la instancia de la organización del usuario. Por ejemplo: https://yourInstance.salesforce.com/. |
id
|
Una URL de identidad que se puede utilizar para identificar al usuario y para consultar con el fin de obtener mÔs información acerca del usuario. Consulte URL de identidad. |
token_type
|
Un tipo de token Bearer, que se utiliza para todas las respuestas que influyen un token de acceso. |
issued_at
|
Marca de tiempo del momento de creación de la firma en milisegundos. |

