pnoeric
(Eric)
1
我的一位成员发布了 这个 Facebook 链接 standalone,但 Discourse 尝试解析它时失败了。
让我把同一个链接单独放在一行试试:
如果您在上面没看到,显示的内容如下:
这个问题也出现在一些成人网站上,有成员尝试分享链接;我快速测试了一下,粘贴了来自不同地方的多个视频 URL,其中几个主要成人网站也无法正常工作。
这似乎是一个相对严重的 bug,因为它影响了 Facebook 内容的嵌入。我的(技术不太精通的)成员喜欢分享 Facebook 上的链接,部分原因是因为 Facebook 非常普及和通用。
此外,如果有人将那个 URL 发布到消息中,它会被解析成无法工作的形式,而原始 URL 也会消失。因此,即使您想访问该 URL 也做不到……它完全不可用了。
那么……是否有可能告诉 Discourse 不要尝试自动嵌入这些域名的视频?我在寻找类似“将包含这些词的 URL 列入黑名单以禁止嵌入媒体”的设置,这样我就可以添加这些域名。(或者,也许可以建立一个白名单,只允许 YouTube 和 Vimeo 等已批准的 URL,以预防未来与新网站相关的问题。)
如果没有这样的设置,我能否在论坛上快速采取一些措施来解决这个问题?
pnoeric
(Eric)
2
Firefox(桌面版)
在我的桌面电脑上,Mac 系统使用 Firefox 75……我遇到了灰色的失败提示框。
pnoeric
(Eric)
3
Safari(桌面端)
在 Safari 上,视频的第一帧会显示,但点击“播放”按钮后,没有任何反应。
Chrome(桌面端)
在 Mac 桌面端使用 Chrome v81……情况相同……你能看到视频,但它从未播放。
pnoeric
(Eric)
4
iPhone - Safari iOS
与 Chrome 或 Safari(桌面版)相同……视频已显示但无法播放。
techAPJ
(Arpit Jalan)
6
Discourse 官方 不支持 Facebook 视频的 onebox 功能。
您可以参考以下内容:
2 个赞
david
(David Taylor)
7
我们能否替换 onebox 的输出,使其不会生成损坏的播放器?我想我们应该让它恢复到之前的工作方式 之前
3 个赞
pnoeric
(Eric)
8
是的,我认为这非常关键。如果 Discourse 不支持 Facebook 视频,对我来说问题不大。但当成员粘贴链接(这种情况并不罕见)却导致错误消息,并且原始链接消失时,这就成了大问题。 我的论坛中现在就有好几条这样的消息。我们管理员正在看到这些问题时手动修复它们,但显然这并不是一个理想的解决方案。
我认为这是一个严重的漏洞,主要是因为 Facebook(以及我测试过的其他视频网站)非常流行。
我很乐意找到快速修复方案……如果我能提供帮助,请告诉我?
4 个赞
techAPJ
(Arpit Jalan)
9
这里最快的解决方法是将 www.facebook.com 添加到设置项:onebox domains blacklist(Onebox 域名黑名单)。这样,Onebox 就不会尝试嵌入 Facebook 的视频了。
3 个赞
techAPJ
(Arpit Jalan)
10
这里的变化是 Facebook 更新了 OpenGraph 元数据,添加了受限过多的视频链接:
<meta property="og:video:secure_url" content="https://video.fjai1-2.fna.fbcdn.net/v/t42.9040-2/10000000_626864624535070_4779621138076532736_n.mp4?_nc_cat=107&_nc_sid=985c63&efg=eyJybHIiOjM1MiwicmxhIjoxMzI5LCJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&_nc_oc=AQkUihmrvyg1wU9qH_NjqkLUzl0XSYJGE6JREtPH7jxKc1aXEIuGLSbauCEPM-hI-DCuJRacr1hCB6HHZre1lxto&rl=352&vabr=196&_nc_ht=video.fjai1-2.fna&oh=3fd1d5e14f27d55bc0d2a91d4714148b&oe=5EA6E533" />
上述视频链接显示错误:Bad URL timestamp。
即使是 og:image 标签中的链接也显示相同的错误。
除了视频标题外,我们没有任何信息可以显示在 Facebook 的 onebox 中。我认为我们应该将 onebox 硬编码为屏蔽 Facebook 视频链接。
6 个赞
pnoeric
(Eric)
11
太好了,谢谢……这完美解决了问题。
顺便提一下,这个问题不仅出现在 Facebook 上;曾有成员尝试发布 xvideos.com 视频页面的链接,也失败了。(不适宜内容警告!那是一个非常典型的成人网站!)我用其他几个网站测试了一下,发现情况相同。
1 个赞
david
(David Taylor)
12
对于 Facebook,我们能否使用 twitter:player 属性并将其用于 iframe?它似乎是一个永不过期的 URL:

(Facebook 提供损坏的 Open Graph 数据,却能正常提供 Twitter 数据,这真是极具讽刺意味:joy:)
或者,也可以采用与 Instagram 相同的逻辑:显示一张带有
按钮的大型缩略图,该按钮可点击链接。
4 个赞
techAPJ
(Arpit Jalan)
13
我试过,但 twitter:image 和 twitter:player 标签的链接失效了。它们在你那边能正常工作吗?
1 个赞
david
(David Taylor)
14
在 @pnoeric 的 示例视频 中,我看到:
<meta name="twitter:player" content="https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/">
这 似乎能正常工作。
但如果您发现某些链接无法正常工作,那么我们最好避免使用这种方式。
1 个赞
techAPJ
(Arpit Jalan)
15
对于同一个链接,我看到的是:
https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/
请注意 & 导致了 URL 断裂……将其改为 & 即可解决问题。所以,我们可以绕过这个问题。
twitter:image 链接仍然失效(例如:示例)。
因此,我们有两个选择:
- 使用
twitter:player 链接嵌入 Facebook 视频
- 在 Onebox 中将 Facebook 视频列入黑名单,并以普通链接形式显示
@codinghorror,你更倾向于哪一个?
3 个赞
techAPJ
(Arpit Jalan)
17
我认为链接不会过期,因为该 URL 本质上是指向一个 Facebook 插件,它会根据我们传递给 href 参数的视频链接嵌入相应的视频。
https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/
因此,我们可以使用 iframe 来嵌入 Facebook 视频。
1 个赞
techAPJ
(Arpit Jalan)
20
不,该修复仅针对 Facebook。
请注意,嵌入视频失败通常表明问题出在您尝试嵌入的网站上。就 Facebook 而言,是因为其限制过严,仅允许在特定时间内播放视频。
我们通常只为非常流行的网站(例如:Instagram)绕过此类错误,以便更广泛的社区受益。如果网站不够流行,而您又需要在自己的网站上嵌入其内容,则建议创建自定义插件,为该网站添加自定义的 Onebox 引擎。
2 个赞
pnoeric
(Eric)
21
好的。
嗯,有没有办法对白名单中的域名进行设置,让 onebox 尝试嵌入这些域名?如果没有,那么我们似乎面临以下情况:
-
我运营一个社区论坛,成员喜欢链接到包含视频的网站。(这些可能是任何网站,当然……我们目前并不清楚具体是哪些。)
-
如果某个网站的代码存在错误导致嵌入无法正常工作,Discourse 会破坏嵌入效果(看起来很糟糕),更糟糕的是,它会移除原始链接,导致其他人无法看到发帖人原本想分享的内容。
难道步骤 2 不应该改为“如果某个网站的代码存在错误导致嵌入无法正常工作,Discourse 停止尝试嵌入,而是直接让链接正常显示?”
我无法通过黑名单来解决这个问题,因为我不知道哪些域名受到了影响,而且任何网站未来都可能出现类似问题。就像我们之前在这里看到的 Facebook 的情况一样。
当然可以修复——只需将您发现问题的域名加入黑名单即可。这并非不可能。
2 个赞
pnoeric
(Eric)
23
好的,没问题。我不是很清楚这个问题的严重程度;如果受此影响的域名不多,手动处理确实是个很好的解决方案。
我仍然认为 Discourse 应该以更优雅的方式处理格式错误的第三方数据,而不是“生成巨大的错误信息并删除 OP 帖子中最重要的内容”——我想你大概也这么认为。
不过目前来说,列入黑名单是一个可以接受的变通方案。谢谢。
2 个赞