ifeabc
(Isak)
1
找不到针对此问题的指南。但我希望将 Discourse 作为“应用”集成到开源协作环境 Nextcloud 中。我认为这可以通过在 Nextcloud 中将 Discourse 以类似 iframe 的方式作为“外部站点”打开来实现。以下是我的操作步骤:
-
注意到 Nextcloud 和 Discourse 之间用于 SSO 的某种“集成应用”:
Discourse SSO - Apps - App Store - Nextcloud
-
在 Nextcloud 中,进入 + 应用 → 集成 → Discourse SSO。安装并启用该应用。
-
进入我的设置,输入我的 SSO 信息:
-
我前往我的 Discourse 论坛网站(该网站是瑞典语的,抱歉),并进入我的管理员设置:
向下滚动并填写以下三个字段:
-
我从 Discourse 和 Nextcloud 中注销。然后登录 Nextcloud(在 Nextcloud 和 Discourse 中使用相同的电子邮件地址),但无法成功打开“外部站点”以显示我的 Discourse 论坛。
为什么 Firefox 会将我的论坛识别为已嵌入?
您确定正在使用正确的 SSO 端点吗?
其次,请检查 CSP 是否导致了此行为(我不确定具体原因或方式)。
ifeabc
(Isak)
3
我已尝试禁用 SSO,但我的论坛所在的子域名仍然无法在 Nextcloud 中打开。不过我的常规域名可以正常打开。
您提到的 CSP 是指托管我的 Discourse 的云服务提供商吗?
Johani
(Joe)
4
来自 Nextcloud
由于各种网络浏览器和网站处理 HTTP 和 HTTPS URL 的方式不同,并且“外部站点”应用将外部链接嵌入到 IFrames 中,您的链接可能无法正常工作。
Discourse 无法在 <iframe> 标签中运行,您的 Discourse 服务器将拒绝连接。
3 个赞
ifeabc
(Isak)
5
谢谢!但如果集成无法实现,那为什么还会有“SSO 集成”应用呢?有没有什么变通方法可以让 Discourse 以 iframe 形式嵌入?
编辑:我已在 Nextcloud 论坛 发布了一个帖子。如果那里能带来任何明确信息,我会再回来汇报。
ifeabc
(Isak)
6
好的,Nextcloud 论坛的一位用户 确认了问题似乎出在 Discourse 上,因为它无法在 iframe 中运行。不过,简单的 Google 搜索指向了这个四年前的 GitHub 项目:
在编辑了 app.yml 以适配该插件后,我接下来该做什么?我是否需要重新构建 Discourse 才能完整安装它?
是的,安装任何插件都需要重新构建。
顺便提醒一下,如果一个插件已超过 4 年未维护,它极有可能导致系统崩溃。
2 个赞
sunjam
(james.network)
8
您可以在项目的 GitHub 上提交问题和功能请求。请注意,该项目尚未针对 20 版本进行更新。点击查看详情。
1 个赞
ifeabc
(Isak)
10
特此说明:我安装了“allowifram”插件,我的 Discourse 确实崩溃了。
ifeabc
(Isak)
11
2 个赞
抱歉回复晚了,最近我一直在探索 Nextcloud 和 Discourse 的集成方案。您可能已经解决了所有问题,但我还是很想交流一下心得。您是否仍在将 Discourse 和 Nextcloud 一起使用?如果是,能否分享更多您希望实现的目标以及目前的运行效果?非常感谢您的分享!
是的,正如您所了解的那样,Discourse 一直都不适合在 iframe 中加载。解决办法是利用 Discourse 自身非常灵活的主题系统,添加一个与主站风格一致的页眉。您还可以通过 Nextcloud 的主题系统对其进行相应调整,使其与主站匹配。在 Nextcloud 的“外部站点”管理设置中,选择 redirect(重定向)选项,这意味着该站点不允许嵌入。点击 Discourse 的链接时,将在同一个浏览器标签页中打开,而不会使用 iframe。

您提到的 Nextcloud discoursesso 应用 主要用于允许用户通过 Nextcloud 向您的 Discourse 站点进行身份验证。看起来您已经正确设置了该应用。您只需访问 Discourse 的网址并尝试登录,就会看到您已使用 Nextcloud 凭据成功登录。
请注意,在 Discourse 中,Discourse SSO 已更名为 Discourse Connect。启用它将完全替换 Discourse 中的所有其他登录选项,因此请务必谨慎使用。
3 个赞
ayian_2004
(Alkiviadis Giannakoulias)
14
我已安装该插件,但仍收到“获取 Discourse 通知失败”的提示。