如何在 apex 中创建自定义 URL 以获得来自第三方应用程序的 Json 响应

How to create custom URL in apex to get Json response from third party application

我正在使用 rest 向第三方应用程序发送一些参数 api 在我发送的参数之一中 URL,第三方应用程序将使用此 URL 5 或 10 分钟后发送 json 响应。我的问题是我如何为他们将用于发送响应的第三方应用程序创建 URL。

如果第 3 方也可以发送 HTTP headers,您可以将当前用户的 session id 发送给他们。如果该用户已启用 API(profile/permission 中的复选框已设置)- 您可以编写接受 POSTs 的 Apex REST 服务。他们会用 Authorization: Bearer <session id here> 来调用它,它可以很好地工作。 trailhead 对您来说可能是一个好的开始。 (或者您能否联系他们的开发人员并同意在 SF 中为他们创建一个专门的用户,以便他们使用自己的凭据登录并发回?)

如果他们不能发送任何特殊的 headers(它必须是未经身份验证的 SF 连接)- 也许您可以制作一个 Visualforce 页面,将其公开为站点,然后页面的控制器可以执行您需要的任何操作.也许你已经有一些东西 public 面向(社区?),也许它是全新的......检查 https://developer.salesforce.com/docs/atlas.en-us.206.0.salesforce_platform_portal_implementation_guide.meta/salesforce_platform_portal_implementation_guide/sites_overview.htm

如果 none 这些对您有用 - url 是否必须返回 Salesforce。也许您可以控制另一台可以接受未经身份验证的请求的服务器,然后让该服务器调用 SF。有点像代理。您甚至可以在 Heroku 上相当轻松地设置一些东西。

最后但并非最不重要的一点。这将是非常愚蠢的,但如果所有其他方法都失败了 - 在沙箱中启用 Web-to-Case 或 Web-to-Lead 并试验这些。在一天结束时,他们会给你一个 url 你可以 POST 并传递一个包含数据的表单。我认为它必须是 Content-Type: application/x-www-form-urlencoded,如果您提到 JSON,他们可能会将其发送为 application/json,因此可能无法正常工作。如果有效——您可以将有效负载保存在案例的描述字段中(可能是特殊记录类型?)并对其进行处理。我真的不喜欢这个。