YouTube API无边框播放器令牌到期

len*_*non 6 youtube token youtube-api chromeless

摘要

我的Flex/AS3应用程序中有一个Youtube API无边框播放器.有时我需要播放器连续播放Youtube的电影(不间断).

问题

  • 在播放12小时或更长时间之后,由第一个播放器初始化请求生成的API令牌将过期.

     http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0
    
    Run Code Online (Sandbox Code Playgroud)

    这里的问题是,在令牌过期后再次调用的API调用loadVideoById无法开始播放视频,因为令牌没有自动续订.

  • 在播放我们的播放列表(每个项目通过调用loadVideoById播放)播放 4-5小时或更长时间后,视频有时会开始播放并突然卡住.虽然没有调度错误事件.

已知的解决方案

  • 因此,对于第一个问题,解决方案是通过卸载播放器并使用API​​调用再次加载它来每12小时更新一次令牌:

     http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0 
    
    Run Code Online (Sandbox Code Playgroud)
  • 对于第二个问题,没有任何想法.需要你的帮助.

相关的源代码

private function CreateYoutubePlayerSWF():void {
    ...
    theYoutubeLoader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
    theYoutubeLoader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0"));
    ...
}

private function PlayPendingVideo():void {
    ...         
    theYoutubePlayer.loadVideoById(videoWaitingToPlayInfo.videoWaitingToPlay);
    ...
}
Run Code Online (Sandbox Code Playgroud)

请求和回复

当玩家停止玩时,这就是我在小提琴手中得到的:

"request": {
      "method": "GET",
      "url": "http://www.youtube.com/get_video?cpn=Lj5HaLu7MzS5kG-T&fmt=35&splay=1&t=vjVQa1PpcFNwMVrYUDFOTTG-7co1uJFo3oyrB-qoP_k=&video_id=j-vJJSqw5Q4&eurl=http%3A%2F%2Fwatchitoo.com%2Fiframe.php%3Fid%3Dwwa-154%26scale%3Dfalse%26layout%3D14&asv=3&el=embedded&ps=chromeless&ptk=youtube_none&noflv=1",
      ...
      "queryString": [
        {
          "name": "cpn",
          "value": "Lj5HaLu7MzS5kG-T"
        },
        {
          "name": "fmt",
          "value": "35"
        },
        {
          "name": "splay",
          "value": "1"
        },
        {
          "name": "t",
          "value": "vjVQa1PpcFNwMVrYUDFOTTG-7co1uJFo3oyrB-qoP_k"
        },
        {
          "name": "video_id",
          "value": "j-vJJSqw5Q4"
        },
        {
          "name": "eurl",
          "value": "http%3A%2F%2Fwatchitoo.com%2Fiframe.php%3Fid%3Dwwa-154%26scale%3Dfalse%26layout%3D14"
        },
        {
          "name": "asv",
          "value": "3"
        },
        {
          "name": "el",
          "value": "embedded"
        },
        {
          "name": "ps",
          "value": "chromeless"
        },
        {
          "name": "ptk",
          "value": "youtube_none"
        },
        {
          "name": "noflv",
          "value": "1"
        }
Run Code Online (Sandbox Code Playgroud)
    "response": {
      "status": 410,
      "statusText": "Gone",
      "httpVersion": "HTTP/1.1",
      "headers": [
        {
          "name": "Date",
          "value": "Wed, 26 Jun 2013 16:32:37 GMT"
        },
        {
          "name": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "name": "Server",
          "value": "Apache"
        },
        {
          "name": "X-Frame-Options",
          "value": "SAMEORIGIN"
        },
        {
          "name": "Content-Type",
          "value": "video/x-flv"
        },
        {
          "name": "Cache-Control",
          "value": "no-cache"
        },
        {
          "name": "Content-Length",
          "value": "0"
        },
        {
          "name": "Expires",
          "value": "Tue, 27 Apr 1971 19:44:06 EST"
        }
Run Code Online (Sandbox Code Playgroud)