能否通过 iframe 将 Discourse 嵌入 Salesforce Community(Experience Cloud 站点)?如果可以,具体如何操作?

我正在使用商业试用版,并参考了这篇文章。LWC 被用作 Discourse 的包装器。由于 LWC 不允许在 HTML 标记中添加 和 标签,我从 myDiscourseAcc.discourse.group/javascripts/embed.js 下载了 JavaScript 库,将其保存到我的 Salesforce 组织中作为静态资源,并加载到 LWC 中。

iframe 可以显示,但它总是显示登录页面和“登录以回复”按钮。但我需要显示论坛及其所有功能——目前无法实现。

  1. 在 LWC 中,我为 window.DiscourseEmbed 指定了 discourseUrl、discourseEmbedUrl 和 fullApp(设置为 true)。
  2. 已在管理员设置 → 嵌入 → 主机中添加了 Salesforce 社区站点。已启用完整应用模式。
  3. Discourse Connect 工作正常,相关设置也已配置。我得出这一结论是因为我可以通过 SF 社区访问 Discourse,并且当我登录时,可以使用我的社区用户自动登录到 Discourse。
  4. 在 Salesforce 组织中,Discourse 已被添加到受信任的 URL 中。
  5. 登录社区时,SF 社区日志和 Discourse 日志中均未出现任何错误。
  6. 加载社区时,我可以设置重定向到 Discourse 再返回,以便通过 URL 获取 SSO 和 SIG。
  7. 当我点击自定义按钮或嵌入的 Discourse iframe 中的“登录以回复”按钮时,我可以在单独的窗口或标签页中打开 Discourse。
  8. Salesforce 社区和我的 Discourse 实例位于不同的域名上。

尽管如此,登录页面仍然在嵌入的 iframe 中打开。我不太确定,但问题可能与 Cookie 有关。

您的选项如下:

  1. 将 Discourse 和 Salesforce 站点移至共享同一个基础域名,例如 forum.yoursite.comcrm.yoursite.com

  2. same_site_cookiesLax 更改为 None。这涉及 使用隐藏站点设置