YouTube API chromeless player token expiration
Asked Answered
H

0

6

Summary

I have a Youtube API chromeless player in my Flex/AS3 application. Sometimes I need the player to play movies from Youtube continuously (non-stop).

Issues

  • After playing for something like 12 or more hours the API token which was generated by the first player initialization request is getting expired.

     http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0
    

    And the issue here is that the API call loadVideoById which is called again after the token is expired can't start playing video, because the token is not getting renewed automatically.

  • After playing our playlist (each item is getting played by calling to loadVideoById) for something like 4-5 or more hours the video sometimes starts to play and suddenly getting stuck. While no error event is dispatched.

Known Solutions

  • So for the first issue the solution is to renew the token each 12 hours by unloading the player and loading it again using the API call:

     http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0 
    
  • For the second issue there are no ideas. Need your help.

The relevant source code

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);
    ...
}

Requests & Responses

When the player stops playing this is what I get in the fiddler:

"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"
        }

    "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"
        }
Hobbie answered 24/6, 2013 at 9:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.