Youtube 嵌入式视频在欧洲服务器上已停止工作

当您尝试对 YouTube URL 进行单框预览时,YouTube 会自动重定向到一个名为 consent.youtube.com 的页面。该页面缺少 oEmbed/OpenGraph 标签,因此单框预览功能不幸失效。

这显然不是 Discourse 的问题,而是与 YouTube 端的一项(看似)破坏性变更有关。我怀疑这是由于某些新的欧洲法规导致的,因为我在 meta 站点上无法复现此问题。

我们的服务器位于欧洲(德国),您可以在此处查看重定向后的 URL:here

12 个赞

通过 Onebox Assistant 插件 得到了一定程度的缓解,但并未完全解决(它仍能渲染嵌入内容,但不再返回标题)。

我认为 YouTube 应该通过 API 密钥或其他方式有特定的实现方案……

1 个赞

我昨晚登录这里就是为了报告这个完全相同的问题,因为最近我们也遇到了同样的情况。但当我粘贴我的 YouTube 示例链接时,在这里(Meta)却运行正常 :roll_eyes:

我的 Discourse 版本是 v2.7.0.beta5 (61860098d9)

5 个赞

很可能是因为 meta 的服务器不在欧洲 :sweat_smile:

2 个赞

英国现在也不是了 :rofl:

1 个赞

该问题与“数据同意书”有关,OneBox 捕获的是同意书内容而非实际内容。

如果您将 https://youtube.com/watch?v=XYZ 改为 https://youtu.be/XYZ,问题即可解决,因为后者是“分享链接”,不会弹出同意对话框。(不过,这并不是理想的解决方案。)

除非 Discourse/OneBox 在生成预览链接时能“自动将 URL 转换为短版本”,否则这或许可以作为一个快速修复方案?我不确定,只是提供更多信息/反馈。

10 个赞

作为一个以媒体内容为主的社区,我们的成员分享了成千上万的 YouTube 视频,其中每月新增的就有数百个。

YouTube 的这一变化已经带来了实际问题,但如果 YouTube 自身强制重定向到其同意页面,我认为这并非 Discourse 能够解决的问题。

5 个赞

我也投一票,这对我们社区来说也将是个大问题。

5 个赞

更新:标题(以及嵌入功能)现在已在一键助手(Onebox Assistant)中恢复正常运行。

1 个赞

所以,如果 Discourse 在帖子生成时按你描述的方式重写 URL,就能解决这个问题吗?

如果是这样的话,一个插件(甚至可能是一个主题组件)就可以修复它。我猜他们很可能会欢迎提交拉取请求(PR),或者会很快自行修复。

从技术上讲,是的。我做了很多测试,结果是一致的:它适用于短链接,但不适用于“官方”链接。

3 个赞

我不认为那是一个稳定的变通方案;Google 很可能在不久的将来也对这些用户实施同样的政策。

2 个赞

确实不是。

只是觉得这很“有趣”,因为无论是 https://youtu.be/VIDEO 还是删除普通网址中的“www”,即 https://youtube.com/watch?v=VIDEO,都能正常工作。因此,从用户的角度来看,带有同意弹窗的“屏蔽”标准并不太“合乎逻辑”。

3 个赞

我并不反对,但这意味着唯一的解决方案就是不使用 YouTube。:man_shrugging:

1 个赞

你还需要捕获编辑器预览,以防止向用户显示这个灾难性的错误消息:

1 个赞

哎呀,我们确实应该调查一下!感谢报告。

13 个赞

补充一点,同样的问题也出现在 /user/ 账户链接上:

6 个赞

你能再测试一下这些链接吗?这是我目前从法兰克福的服务器看到的情况(wget 输出已编辑,仅显示重定向信息):

wget 'https://youtu.be/KCyIfcevExE'

--2021-04-06 19:03:39--  https://youtu.be/KCyIfcevExE
Location: https://www.youtube.com/watch?v=KCyIfcevExE&feature=youtu.be [following]

--2021-04-06 19:03:39--  https://www.youtube.com/watch?v=KCyIfcevExE&feature=youtu.be
Location: https://consent.youtube.com/m?continue=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DKCyIfcevExE%26feature%3Dyoutu.be&gl=DE&m=0&pc=yt&uxe=23983172&hl=de&src=1 [following]

或者

wget 'https://youtube.com/watch?v=KCyIfcevExE'

--2021-04-06 19:05:45--  https://youtube.com/watch?v=KCyIfcevExE
Location: https://consent.youtube.com/m?continue=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DKCyIfcevExE&gl=DE&m=0&pc=yt&uxe=23983172&hl=de&src=1 [following]

--2021-04-06 19:05:45--  https://consent.youtube.com/m?continue=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DKCyIfcevExE&gl=DE&m=0&pc=yt&uxe=23983172&hl=de&src=1
Location: https://consent.youtube.com/ml?continue=https://youtube.com/watch?v%3DKCyIfcevExE&gl=DE&hl=de&pc=yt&uxe=23983172&src=1 [following]

(即,这两种 URL 格式现在也会重定向到同意页面)

3 个赞

我刚刚在我的英国服务器上为您测试了该 URL,它可以正常进行 onebox/预览:

如果我将它改为完整/长 URL,则会再次出现同意问题:

4 个赞