微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 OAUTH 验证 Salesforce 客户用户失败

如何解决使用 OAUTH 验证 Salesforce 客户用户失败

我有点像销售人员/网络新手,但我正在测试客户 360 外部身份许可证以及客户用户。我的主要目标是使用 OAUTH 对客户用户进行身份验证,获取访问令牌,然后使用 Salesforce Web API 访问客户用户的一些相关信息。然而,我似乎无法弄清楚如何让客户用户通过身份验证,尽管我可以对我的个人管理员用户帐户做同样的事情。

我有以下设置:

  • 一堆外部身份许可证
  • 分配了外部身份用户许可的配置文件,并选中 API 启用设置。
  • 设置了宽松的 IP 限制的连接应用设置,所有用户都可以自行授权设置,启用 OAUTH 设置,启用设备流程,并选择完全访问 OAUTH 范围。
  • 与关联的最终客户用户联系的最终客户联系人,分配给外部身份配置文件,从而分配给外部身份用户许可证。

我正在发布到测试令牌端点 (https://test.salesforce.com/services/oauth2/token)。

我已经为 IOT 尝试了两种身份验证流程、密码和设备流程,因为我想将其与命令行应用程序集成(显然 IOT 流程很适合),虽然两者都成功获得了我的个人 Salesforce 用户凭据,他们都无法获取我的测试用户帐户凭据。

  1. 密码流的服务器响应如下:
{
    "error": "invalid_grant","error_description": "authentication failure"
}

最终客户用户似乎没有安全令牌,所以我只是自己使用密码。我似乎找不到为这些类型的用户生成安全令牌的方法,但怀疑这可能是此流程的问题。

  1. 尝试设备流程时,返回的验证 uri 始终为 https://test.salesforce.com/setup/connect,但由于客户用户失败并出现此错误,因此尝试在此页面登录
Please check your username and password. If you still can't log in,contact your Salesforce administrator".

我肯定在这里提供了正确的客户用户凭据,所以不知道为什么会失败。

有没有人对如何让这个工作有任何想法?

解决方法

@eyescream 将我推向了正确的方向,因此对于与我处于相同位置的任何人来说,这是一个解决方案。

外部身份客户用户的身份验证不是使用普通的 OAUTH REST 端点(https://test.salesforce.com/services/oauth2/tokenhttps://login.salesforce.com/services/oauth2/token)完成的。

相反,您必须设置一个体验云站点,将您的客户用户配置文件添加到成员配置文件的站点列表中,然后使用特定于站点的 AUTH 端点进行身份验证。

例如,如果您的体验云 URL 是 https://sandboxname-companyname.instanceid.force.com,那么您的 OAUTH 令牌端点将位于:

https://sandboxname-companyname.instanceid.force.com/services/oauth2/token

注意事项:

  1. 客户用户帐户无法使用用户名-密码流程进行身份验证。
  2. IOT(或命令行应用程序)的设备流程将返回客户用户无法登录的验证 URL (https://test.salesforce.com/setup/connect)。您可以改为使用体验站点连接 URL (https://sandboxname-companyname.instanceid.force.com/sitename/setup/connect)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。