如何使用同一个连接的应用程序访问多个 salesforce 组织

How to access multiple salesforce orgs with same connected app

我正在尝试使用相同的连接应用程序访问多个 salesforce 站点中的多个社区,但无法访问。

例如:我创建了两个 salesforce 站点 A 和 B。并在 A 中创建了连接应用程序。要访问 A 的其余 API,我可以在 A 中使用连接应用程序进行身份验证,但是如何使用相同的 client_secret 和 client_id 连接 B,但 user_name 和密码不同? 或者有什么方法可以使用用户名和密码作为 creds 连接 REST API?

示例:站点 A 中有 community_A1、community_A2,站点 B 中有 community_B1、community_B2。 我需要访问两个站点中的社区

这应该开箱即用,您遇到了什么错误? 您可以拥有一组消费者密钥和秘密(如果目标组织中的管理员没有阻止它)您可以使用它来登录世界上的任何 SF、沙盒或生产、核心 SF 或社区。

想象一下,作为从 salesforce 提取数据的移动应用程序的开发人员。您只想拥有一对密钥,而不是为每个可能安装您的应用程序的组织安装单独的密钥...

您需要的所有特定于组织的内容是用户名、密码和登录名 url。对于社区,登录 url 看起来像 https://sandboxName-MyDomain.cs123.force.com/communityName

完成后,您可以在 https://sandboxName-MyDomain.cs123.force.com/communityName/.well-known/openid-configuration

检查所有 OAuth2 内容

你玩过https://openidconnect.herokuapp.com/吗? 粘贴您的社区 url,现在保持客户端和机密不变,单击下一步。登录社区并继续单击下一步。它应该可以正常工作,最后 - 给你 access_token / session id.

现在完全关闭此浏览器/打开新的隐身模式 window 然后再做一次。这次提供您的登录名 url,还有客户和密码。 Next, Next... 查看用户的登录历史,现在应该会提到你连接的应用程序。

现在关闭它,上次使用其他社区的登录名 url 和另一个用户的凭据,但仍然使用您的客户端和密码。


is there any way to connect with REST API with username and password as creds?

不适用于社区。内部用户可以通过 https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_username_password_flow.htm&type=5 一次性获得访问权限,但 community/experience 用户需要这种交互式登录,必须有人工同意/密码输入步骤。无论如何,这不是很安全的流程。 “Experience Cloud 站点不支持 OAuth 2.0 用户名-密码流程。”

在紧要关头,您可以尝试 SOAP API 的登录方法,但根据我的记忆,您可能需要在消息中传递社区的 ID 然后

Connected-app 是 salesforce 中的全局元数据。一旦我们在一个组织中创建了一个连接的应用程序,就可以访问具有相同 client_id、client_secret 的任何 salesforce 站点,除非管理员已阻止访问。

我需要将自定义配置文件添加到社区成员中以允许通过 API (Community workspace -> administration -> members -> profiles.)

访问社区