似乎YouTube禁用了在外部网站上嵌入实时聊天的功能,但随后忘记更新文档。或者,可能存在未修复的错误导致此功能失效。
2021更新:聊天嵌入功能再次可用。使用与以前相同的语法。参见下面的
a helpful comment below。
细节:
YouTube知识库仍然表示,可以使用像您发布的URL(
see here,第“Embed Live chat”节)这样的URL将实时聊天iframe嵌入外部网站。
然而,当尝试这样做并查看浏览器的控制台时,您会看到如下消息:
Refused to display 'https://www.youtube.com/live_chat?v=12345&embed_domain=example.com' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
当查看对https://www.youtube.com/live_chat?…请求的响应时,在浏览器的开发人员工具的“Network”选项卡中也可以看到x-frame-options:SAMEORIGIN头。
这意味着YouTube不允许浏览器将其嵌入到除youtube.com之外的iframe中。(在YouTube本身上,此嵌入代码仍然有效:当您检查YouTube上任何当前正在流式传输的视频的源代码时,您会发现那里的实时聊天窗口是使用相同的
/live_chat?…
请求,在一个iframe中。)
已删除此功能的其他指示:
- YouTube文档提到:
“实时聊天模块仅存在于YouTube观看页面上,而不是嵌入的播放器。(
source)”
我相信这是文档的新部分,“嵌入实时聊天”下面的部分已过时。
- 这个2016年的
教程使用了记录的URL格式来嵌入一个示例实时聊天,现在显示出相同的“拒绝显示[...]在一个frame中,因为它将'X-Frame-Options'设置为'sameorigin'。”假设这在2016年起作用,YouTube方面肯定有所改变。
- 这个
Reddit帖子讲述了一个人的嵌入实时聊天在2018年9月初突然停止工作的情况 - 所以就在这个问题被问之前不久。
替代方案
您可以使用YouTube Livestream API,特别是
LiveChatMessages终端点来获取和创建聊天消息。可能有一些开源库可以帮助处理这个问题。到目前为止,我发现了
this one(可以显示但不能创建聊天消息)。
您可以嵌入自己的聊天,安装在您自己的服务器上或者
a cloud-hosted livestream chat solution。此解决方案还可以提供YouTube直播聊天不提供的功能,例如允许匿名访客发布消息。
您可以反向代理
https://www.youtube.com/live_chat?…
URL,将YouTube的响应转发但删除X-Frame-Options标头。
如果您只需要一台或几台计算机的解决方案,可以使用浏览器扩展程序从YouTube的响应中删除X-Frame-Options标头。请参见
this question。