当您尝试对 YouTube URL 进行单框预览时,YouTube 会自动重定向到一个名为 consent.youtube.com 的页面。该页面缺少 oEmbed/OpenGraph 标签,因此单框预览功能不幸失效。
这显然不是 Discourse 的问题,而是与 YouTube 端的一项(看似)破坏性变更有关。我怀疑这是由于某些新的欧洲法规导致的,因为我在 meta 站点上无法复现此问题。
我们的服务器位于欧洲(德国),您可以在此处查看重定向后的 URL:here。
当您尝试对 YouTube URL 进行单框预览时,YouTube 会自动重定向到一个名为 consent.youtube.com 的页面。该页面缺少 oEmbed/OpenGraph 标签,因此单框预览功能不幸失效。
这显然不是 Discourse 的问题,而是与 YouTube 端的一项(看似)破坏性变更有关。我怀疑这是由于某些新的欧洲法规导致的,因为我在 meta 站点上无法复现此问题。
我们的服务器位于欧洲(德国),您可以在此处查看重定向后的 URL:here。
通过 Onebox Assistant 插件 得到了一定程度的缓解,但并未完全解决(它仍能渲染嵌入内容,但不再返回标题)。
我认为 YouTube 应该通过 API 密钥或其他方式有特定的实现方案……
我昨晚登录这里就是为了报告这个完全相同的问题,因为最近我们也遇到了同样的情况。但当我粘贴我的 YouTube 示例链接时,在这里(Meta)却运行正常 ![]()
我的 Discourse 版本是 v2.7.0.beta5 (61860098d9)
很可能是因为 meta 的服务器不在欧洲 ![]()
英国现在也不是了 ![]()
该问题与“数据同意书”有关,OneBox 捕获的是同意书内容而非实际内容。
如果您将 https://youtube.com/watch?v=XYZ 改为 https://youtu.be/XYZ,问题即可解决,因为后者是“分享链接”,不会弹出同意对话框。(不过,这并不是理想的解决方案。)
除非 Discourse/OneBox 在生成预览链接时能“自动将 URL 转换为短版本”,否则这或许可以作为一个快速修复方案?我不确定,只是提供更多信息/反馈。
作为一个以媒体内容为主的社区,我们的成员分享了成千上万的 YouTube 视频,其中每月新增的就有数百个。
YouTube 的这一变化已经带来了实际问题,但如果 YouTube 自身强制重定向到其同意页面,我认为这并非 Discourse 能够解决的问题。
我也投一票,这对我们社区来说也将是个大问题。
更新:标题(以及嵌入功能)现在已在一键助手(Onebox Assistant)中恢复正常运行。
所以,如果 Discourse 在帖子生成时按你描述的方式重写 URL,就能解决这个问题吗?
如果是这样的话,一个插件(甚至可能是一个主题组件)就可以修复它。我猜他们很可能会欢迎提交拉取请求(PR),或者会很快自行修复。
从技术上讲,是的。我做了很多测试,结果是一致的:它适用于短链接,但不适用于“官方”链接。
我不认为那是一个稳定的变通方案;Google 很可能在不久的将来也对这些用户实施同样的政策。
确实不是。
只是觉得这很“有趣”,因为无论是 https://youtu.be/VIDEO 还是删除普通网址中的“www”,即 https://youtube.com/watch?v=VIDEO,都能正常工作。因此,从用户的角度来看,带有同意弹窗的“屏蔽”标准并不太“合乎逻辑”。
我并不反对,但这意味着唯一的解决方案就是不使用 YouTube。![]()
哎呀,我们确实应该调查一下!感谢报告。
你能再测试一下这些链接吗?这是我目前从法兰克福的服务器看到的情况(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 格式现在也会重定向到同意页面)