在不清楚的情况下,嵌入式播放器向某些用户显示“请单击此处以在YouTube上观看此视频”

ang*_*ran 5 youtube-api youtube-iframe-api

我们在基于Cordova的混合应用程序中使用YouTube嵌入式播放器。该应用程序在全球范围内拥有大量流量。

当某些用户在不清楚的情况下尝试播放任何视频时,播放器会向他们显示“ 请单击此处以在YouTube上观看此视频 ”消息。

我们看不到清晰的图案,它似乎并不取决于用户所在的国家或视频的限制。

我们已经在播放器代码(https://www.youtube.com/yts/jsbin/player_ias-vflrnurMS/en_US/base.js)中看到,消息已分配给名为“ TOO_MANY_REQUESTS_WITH_LINK ” 的常量,但数量不多每个用户的请求数,配额不能像其他Google API一样配置。

我们遵循iFrame API参考:https : //developers.google.com/youtube/iframe_api_reference?hl= zh-CN

<iframe id="player" src="https://www.youtube.com/embed/M7lc1UVf-VE?autoplay=1&amp;cc_load_policy=0&amp;controls=0&amp;disablekb=1&amp;enablejsapi=1&amp;fs=0&amp;iv_load_policy=3&amp;loop=0&amp;modestbranding=1&amp;playsinline=1&amp;rel=0&amp;showinfo=0&amp;wmode=transparent&amp;origin=XXX" frameborder="0"></iframe>

<script type="text/javascript">
    var player,
        scriptTag = document.createElement('script'),
        firstScriptTag = document.getElementsByTagName('script')[0];
    scriptTag.src = "https://www.youtube.com/iframe_api";
    firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag);
    function onYouTubeIframeAPIReady() {
        var options = JSON.parse('{"autoplay":1,"cc_load_policy":0,"controls":0,"disablekb":1,"enablejsapi":1,"fs":0,"iv_load_policy":3,"loop":0,"modestbranding":1,"playsinline":1,"rel":0,"showinfo":0,"wmode":"transparent","origin":"XXX"}');
        if (!options.origin) {
            options.origin = location.origin ||
            location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '');
        }
        player = new YTRemoteVPlayer('player', '<%-videoId%>', options);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

有谁知道会发生什么情况以及如何解决?

Aug*_*rmo 9

我和我的队友设法在本地重现该行为。

要重现该行为,您所需要做的就是在同一IP地址下,多次加载youtube JS并加载不同的视频。尽管我无法阐明必须完成的确切时间(我们将某些设备留在了旁边),但是这种行为确实发生了。

为了解决该问题,我们访问了https://web.archive.org/web网站,并获取了旧的YouTube JS脚本(https://www.youtube.com/iframe_api)。我们尝试使用该旧脚本,但没有成功。该消息继续出现= /。

我真的不知道我们(开发人员)是否可以做很多事情,但是要等到YouTube声明和/或最终修订最近的更改。


更新资料

Google的问题跟踪网站上已打开一个问题:


更新资料

YouTube似乎已经解决了该问题。我们将继续监视:)


更新(2019年11月5日)

问题再次发生。


更新(2019年11月7日)

我已经开了issuetracker一个新的问题: - https://issuetracker.google.com/issues/144057800


All*_*eno 3

我没有解决办法,但我可以添加有关该问题的更多信息,这样也许有人可以帮助我们解决这个问题。

我在一些用户身上遇到了同样的错误,就像你说的,没有明确的模式。我的设备工作正常,但我在出现此错误的应用程序用户的帮助下进行了一些测试。结果如下:

我的测试中使用的演示:https ://developers.google.com/youtube/youtube_player_demo

测试 1 - 在设备浏览器上打开 iframe 播放器 api 演示 - 已成功

测试 2 - 在我的应用程序上将 iframe 播放器 api 演示打开到 web 视图中 - 失败

测试 3 - 使用 VPN 连接在我的应用程序上的 Web 视图中打开 iframe 播放器 api 演示 - 已成功

所以,看来是APP+IP的组合被封了。我不知道原因,如果有人重复这些测试将会非常有帮助。我正在尝试与另一位用户确认,但很难找到愿意提供帮助的人。

更新:第二个用户尝试使用 VPN,这对他也有效。

更新 2:遇到此问题的用户告诉我,视频现在可以正常工作了。这似乎是 Youtube 在服务器端的临时阻止。

  • 问题又回来了:( (3认同)