Loading
识别您的用户并管理访问
目录
选择筛选器

          没有结果
          没有结果
          以下是一些搜索提示

          检查关键字的拼写。
          使用更普遍的搜索词。
          选择更少的筛选器,并扩大搜索范围。

          搜索所有 Salesforce 帮助
          适用于 IoT 集成的 OAuth 2.0 设备流

          适用于 IoT 集成的 OAuth 2.0 设备流

          要集成在输入或显示能力有限的设备上运行的应用程序,例如智能电视、电器和其他 IoT 设备,请使用 OAuth 2.0 设备流。命令行应用程序也可以使用该流。通过在支持更多高级输入功能的设备(例如台式机或移动设备)上访问浏览器,用户可以将这些应用程序连接到 Salesforce。

          所需的 Edition

          适用于 Salesforce Classic 和 Lightning Experience
          适用于:所有版本

          例如,一位客户晚上外出时,使用蓝牙设备来控制室内灯光。您可以为蓝牙设备创建外部客户端应用程序,以启用此流。

          1. 用户在他们的移动设备上打开蓝牙应用程序,然后单击“开灯”。
          2. 外部客户端应用程序向 Salesforce 令牌端点发布请求。
          3. Salesforce 验证该请求,并返回可读的用户代码、验证 URL 和设备代码。
          4. 蓝牙应用程序会显示设备代码,并指示用户在指定的验证 URL 中输入。应用程序还开始轮询 Salesforce 标记端点进行授权。
          5. 用户单击验证 URL 的链接并输入代码。
          6. 然后,用户授权应用程序访问他们受保护的数据,在这种情况下是他们家的位置。
          7. Salesforce 向外部客户端应用程序发送访问和刷新令牌。
          8. 蓝牙应用程序可以访问用户的家庭位置并打开灯。

          让我们来看看这个授权流中的步骤。

          1. 设备请求授权
          2. Salesforce 返回验证代码
          3. 用户会在设备投票标记端点时验证和认证
          4. Salesforce 授予访问标记

          设备请求授权

          为了启动授权流,设备通过外部客户端应用程序向 Salesforce 令牌端点发布授权请求。

          例如:

          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=api

          在请求中包括这些参数。

          重要
          重要 在开发 OAuth 集成时,请始终在 POST 请求的正文或请求标题中传递敏感信息。不要在 URL 查询字符串中使用 GET 参数来传递敏感信息。敏感信息包括但不限于用户名、密码、OAuth 令牌、客户端密码和任何个人身份信息。有关安全最佳实践的更多信息,请查看安全编码指南中的存储敏感数据
          参数 描述
          Request Header

          请求标题包含此信息:

          • Salesforce OAuth 2.0 标记端点。外部客户端应用程序向该端点发送 OAuth 令牌请求。
          • 授权服务器。
          • 请求的内容类型。
          response_type 外部客户端应用程序请求的 OAuth 2.0 授权类型。该流的值必须是 device_code
          client_id 外部客户端应用程序的使用者密钥。要访问使用者密钥,请从外部客户端应用程序管理器中找到外部客户端应用程序,并从下拉列表中选择编辑设置。然后,展开 Oauth 设置部分,并单击消费者密钥和密码。在查看消费者密钥之前,有时会提示您验证您的身份。
          scope 可选。定义外部客户端应用程序可以访问的受保护资源类型的权限。在构建外部客户端应用程序时,您可为其分配范围,并在授权流期间包含在 OAuth 令牌中。如果您不包含此参数,则会请求分配给外部客户端应用程序的所有范围。此参数中传递的范围必须是已注册范围的子集。有关有效参数,请参见 Oauth 范围

          Salesforce 返回验证代码

          验证该请求后,Salesforce 会返回可读的用户代码、验证 URL 和设备代码。

          此示例响应会返回这些包含带有 200 个成功状态代码的值。

          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
          }
          

          响应中包括以下参数。

          参数 描述
          Response Header

          响应标题包含此信息:

          • 200 成功状态代码
          • 响应的内容类型
          • 指示数据未存储在缓存中
          device_code

          设备的验证代码。该代码在 10 分钟内有效。代码可以包括大写字母、小写字母和数字。

          Salesforce 可以随时更改我们格式化设备代码的方式。在您开发使用此流的集成时,请勿对设备代码格式和长度进行假设。

          user_code 最终用户的验证代码,以 8 位字母数字代码的形式发送。用户必须在验证 URL 上输入该代码。该代码在 10 分钟内有效。
          verification_uri

          授权服务器上的最终用户验证 URL。用户必须在验证 URL 上输入用户代码。

          通过 My Domain 登录 URL 或 Experience Cloud 站点 URL 进行验证,verification_uri 会反映启动流的 URL。例如,如果设备会将令牌请求发送到 https://acme.my.salesforce.com/services/oauth2/tokenverification_urihttps://acme.my.salesforce.com/setup/connect

          或者,您可以将 prompt 参数添加到 verification_uri

          interval 我们建议在标记端点投票请求之间等待的最小秒数。

          用户会在设备投票标记端点时验证和认证

          设备上的客户端应用程序会指示用户在计算机或智能手机上访问验证 URL,并输入用户代码。用户打开浏览器,导航到验证 URL,并输入显示在设备上的代码。如果代码有效,用户将根据需要登录。在成功登录后,用户允许设备访问 Salesforce 客户数据。

          同时,在显示用户代码和验证 URL 后,设备上的客户端应用程序会重复为标记端点投票。投票会检查用户是否已授权访问,以及授权服务器是否已发布访问标记。

          此处是投票请求示例:

          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​jc0NDg3NTA1O1gxRDlTRUVU

          投票请求除了标题之外,还包含这些参数。

          参数 描述
          grant_type 对于该流,该值必须是设备
          client_id 外部客户端应用程序的使用者密钥。要访问使用者密钥,请从外部客户端应用程序管理器中找到外部客户端应用程序,并从下拉列表中选择编辑设置。然后,展开 Oauth 设置部分,并单击消费者密钥和密码。在查看消费者密钥之前,有时会提示您验证您的身份。
          code 授权服务器创建授权代码,这是一个短期标记,并在成功身份验证后将其传递给客户端。客户端会将授权码发送到授权服务器,以获取访问标记,或刷新标记。

          Salesforce 授予访问标记

          如果用户拥有授权访问权限,Salesforce 会以成功消息和访问标记以及其他值作为响应。例如:

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

          这些参数包含在示例响应中。

          参数 描述
          access_token 外部客户端应用程序用来代表客户端应用程序请求访问受保护资源的 OAuth 标记。访问标记可以附带范围形式的附加权限。
          refresh_token 从 Web 服务器、用户代理或混合应用程序标记流中获取的标记。该值是密钥。采取适当措施保护它。仅当您的外部客户端应用程序设置了refresh_token范围时,才会返回此参数。
          signature 使用 client_secret 签名的 Base64 编码 HMAC-SHA256 签名。签名可以包括连接 ID 和issued_at value,您可以使用它们来验证身份 URL 在服务器发送后没有更改。
          scope

          与访问标记关联的范围。

          范围进一步定义了客户端可以访问的受保护资源的类型。在构建外部客户端应用程序时,您可为其分配范围,并在授权流期间包含在 OAuth 令牌中。

          有关有效参数,请参见 Oauth 范围

          instance_url 指示用户的组织实例的 URL。例如:https://yourInstance.salesforce.com/.
          id 可用于标识用户以及查询有关用户的更多信息的身份 URL。请参阅身份 URL
          token_type Bearer标记类型,用于包含访问标记的所有响应。
          issued_at 签名创建时间的时间戳,单位毫秒。

          另请参阅:

           
          正在加载
          Salesforce Help | Article