Twitter 原生嵌入

我们不在撰写器预览中启用嵌入,这是预期的行为。

|||
|-|-|-|
| :information_source: | 摘要 | 使 Discourse 支持原生 Twitter 嵌入 |
| :hammer_and_wrench:|存储库| GitHub - Lhcfl/discourse-twitter-native-embed |
| :question:|安装指南|如何安装主题或主题组件|
| :open_book:|刚接触 Discourse 主题?| Discourse 主题使用入门指南|

安装此主题组件

最近的 Twitter API 限制导致一些 discourse 论坛的 onebox 无法显示。此主题组件使 Discourse 能够支持原生 Twitter 嵌入,而无需任何 Twitter API。

该主题组件从 platform.twitter.com 请求 twitter javascript,因此如果 Twitter 愿意,它可以在此 javascript 中跟踪您并导致隐私问题。您需要权衡是否信任这个现在越来越荒谬的社交平台。

要使用此组件,您必须在站点设置的内容安全策略权限范围内添加 Twitter 链接,并将 twitter.comx.com 添加到被阻止的 onebox 域中

https://platform.twitter.com/

37 个赞

执行此操作后是否需要重新生成?我已经安装并将其添加到内容安全策略中,但仍然没有嵌入,只有链接。

1 个赞

当然不是。请给我您网站的链接,我会看看为什么这个组件在我的论坛上运行正常。

5 个赞

谢谢,我明白了。从设置中删除 Twitter 消费者密钥和密钥后,它现在可以按预期工作了,我认为这是因为我没有删除这些设置,所以它默认尝试使用 API 进行嵌入。再次感谢您做到这一点,如果 Instagram 也能实现类似的功能那就太好了。

6 个赞

干得好。感谢这个主题组件。出色的及时工作。:slightly_smiling_face:

3 个赞

太棒了,谢谢!\n\n对我来说,它如宣传的那样工作,但也许不那么清楚的是,在预览中,你只看到推文 URL 是一个超链接,嵌入会在回复或帖子提交时发生。

2 个赞

我们的情况正好相反……预览显示嵌入,但发布后却不显示。

1 个赞

干得好,主意不错。

我做了一个小分支,用于嵌入时使用数据主题的暗模式。效果很好,但我不是专业的编码员。

如果你能添加一个选项来使用默认主题或暗主题,我认为会更好!

9 个赞

我们已完成上述所有建议的修改。我们现在的问题仅在于尝试使用移动设备发布时……使用笔记本电脑/台式机嵌入推文现在可以正常工作。

2 个赞

有些人想要嵌入式组件,并且不需要“登录”功能,因此该组件将非常受欢迎,而且我也看到了其他平台的请求。

我个人更喜欢比 Onebox 更自然的 Twitter 嵌入式样式,如果更受欢迎的平台嵌入式组件能保留原生外观,就能很好地区分它们在主题流中的作用。真是太棒了,不禁让人想,为什么我们以前没有这个功能来避免所有开发者账户设置的复杂性,但你瞧,形势所迫,勇敢的人们挺身而出迎接挑战。

¡非常非常感谢!

1 个赞

另外,关于嵌入式内容(embeds)的脆弱性,在看了推特(Twitter)崩溃的话题后,又让我想到了一个我以前的想法。

如果嵌入式内容能够作为嵌入功能的一部分,生成嵌入预览的备份位图(bitmap),就能防止类似 Photobucket 的情况发生。

我不知道这该如何编码实现,但我设想它的原理与抓取已发布链接图片并将其存储在原生数据库中的功能类似。假设这更容易实现,因为它是一个已经存在于某个服务器上的文件。我认为这就像一个即时屏幕截图功能,在嵌入内容被发布到 Discourse 帖子时触发。

随着互联网的发展,网站存档部分内容是有帮助的,因为东西会不时消失。

我还要在这里提出另一个类似的功能建议:此处

1 个赞

谢谢。

1 个赞

这是一个重要且新发现的问题,将两者结合起来看——如果您之前没有启用 CSP,并且您使用了 Google AdSense,那么在启用 CSP 时,如果您使用加密(DM)来使 Twitter 组件正常工作,可能会出现冲突,从而导致广告失效!

我想被证明是错的,并得到一个绝佳的解决方案,或者被告知“你做错了”。

2 个赞

假设通过 API 进行 Oneboxing 现在需要付费的 Twitter 订阅,是否应该将此方法添加到 Discourse 核心?大型企业社区可以负担埃隆的费用,但对于非营利组织和小型社区来说,这遥不可及。

这个想法能得到 @team 的支持吗?

Twitter 的衰落是一个棘手的案例。它仍然是大多数新闻和事件的头号来源,被媒体、公司和相关人士使用。尽管埃隆进行了“震荡”,但该平台没有可信的挑战者或替代品。

2 个赞

抱歉,此组件在我的 Discourse 实例上无法正常工作。我们已删除 Twitter 登录密钥,但仍然无效。还启用了 CSP。

2 个赞

您好 ljpp,

失去丰富的嵌入内容确实是我们不希望发生的情况,我们正在讨论如何妥善处理此事。:slight_smile:

当您在编辑器中粘贴 Twitter 链接时,您的浏览器开发者工具的网络选项卡返回了什么?
JavaScript 控制台中是否存在错误?

3 个赞

我们正在考虑这个问题,但有两个非常大的问题需要解决:

  1. IFRAME 意味着我们允许 Twitter 跟踪用户。存在隐私问题。
  2. IFRAME 意味着我们需要打一场“未知”高度的战争。如果我们没有高度,只有在与 Twitter 沟通后才能获得高度,页面就会跳来跳去,这会严重影响 Discourse 的体验。提前确定高度非常困难。
6 个赞

确实如此。此主题组件的变通方法会从 Twitter 服务器加载 JavaScript,考虑到 Twitter 的整体状况,这存在巨大的隐私风险。因此,我至少目前不愿应用此主题组件。

确实是个棘手的情况。

5 个赞

我不确定该看什么,但这是在撰写器中粘贴链接后的结果:


在预览中,我看到此消息:


这是推文:

2 个赞

更新:

现在嵌入式内容可以正常工作了,但组合器预览仍然显示“抱歉,我们无法生成……”消息。发布后,一切看起来都很好。

2 个赞