krishna
krishna

Reputation: 49

Upload the files from live server to youtube is not working?

I am working in you tube API integration.This code works perfectly in local host.But its not working live server.further its not upload video from live server to YouTube.I am not able to upload video on youtube from my live server.I am trying to solve nearly 2days..This is sample code for upload video to YouTube.

 <?php
    $youtube_email = "xxxxxxxx"; // Change this to your youtube sign in email.
    $youtube_password = "xxxxxxxxx"; // Change this to your youtube sign in password.

    $postdata = "Email=".$youtube_email."&Passwd=".$youtube_password."&service=youtube&source=Example";
    $curl = curl_init("https://www.google.com/youtube/accounts/ClientLogin");
    curl_setopt($curl, CURLOPT_HEADER, "Content-Type:application/x-www-form-urlencoded");
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
    $response = curl_exec($curl);
    curl_close($curl);

    list($auth, $youtubeuser) = explode("\n", $response);
    list($authlabel, $authvalue) = array_map("trim", explode("=", $auth));
    list($youtubeuserlabel, $youtubeuservalue) = array_map("trim", explode("=", $youtubeuser));

    $youtube_video_title = "kamal"; // This is the uploading video title.
    $youtube_video_description = "kamal"; // This is the uploading video description.
    $youtube_video_category = "News"; // This is the uploading video category.
    $youtube_video_keywords = "kamal, video"; // This is the uploading video keywords.

    $data = '<?xml version="1.0"?>
                <entry xmlns="http://www.w3.org/2005/Atom"
                  xmlns:media="http://search.yahoo.com/mrss/"
                  xmlns:yt="http://gdata.youtube.com/schemas/2007">
                  <media:group>
                    <media:title type="plain">'.$youtube_video_title.'</media:title>
                    <media:description type="plain">'.$youtube_video_description.'</media:description>
                    <media:category
                      scheme="http://gdata.youtube.com/schemas/2007/categories.cat">'.$youtube_video_category.'</media:category>
                    <media:keywords>'.$youtube_video_keywords.'</media:keywords>
                  </media:group>
                </entry>';

    $key = "XXXXXXXXXXXXXXXXXXX"; // Get your key here: http://code.google.com/apis/youtube/dashboard/.

    $headers = array("Authorization: GoogleLogin auth=".$authvalue,
                     "GData-Version: 2",
                     "X-GData-Key: key=".$key,
                     "Content-length: ".strlen($data),
                     "Content-Type: application/atom+xml; charset=UTF-8");

    $curl = curl_init("http://gdata.youtube.com/action/GetUploadToken");
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_REFERER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_HEADER, 0);

    $response = simplexml_load_string(curl_exec($curl));
    curl_close($curl);
    ?>
    <script type="text/javascript">
      function checkForFile() {
        if (document.getElementById('file').value) {
          return true;
        }
        document.getElementById('errMsg').style.display = '';
        return false;
      }
    </script>

    <?php
    $nexturl = "http%3A%2F%2Fwww.walola.com"; // This parameter specifies the URL to which YouTube will redirect the user's browser when the user uploads his video file.
    ?>

    <form action="<?php echo($response->url); ?>?nexturl=<?php echo(urlencode($nexturl)); ?>" method="post" enctype="multipart/form-data" onsubmit="return checkForFile();">
      <input id="file" type="file" name="file"/>
      <div id="errMsg" style="display:none;color:red">
        You need to specify a file.
      </div>
      <input type="hidden" name="token" value="<?php echo($response->token); ?>"/>
      <input type="submit" value="go" />

    </form>
    </php>

Please provide approximate solutions for this....ASAP...

Upvotes: 4

Views: 707

Answers (1)

Jeff Posnick
Jeff Posnick

Reputation: 56074

The page that's loaded after the browser-based upload completes is determined by the URL you pass in as the nexturl= parameter in the action attribute of the form, as explained in the documentation.

You're passing <?php echo(urlencode($nexturl)); ?> as the value there, so if you're getting a page not found response when the upload's complete, it's because of that value.

Looking at your code, I think the problem is that your $nexturl value is "http%3A%2F%2Fwww.walola.com", which is already URL escaped, and then you're calling urlencode() on it. Try using "http://www.walola.com" for $nexturl instead and then calling urlencode() on that.

Upvotes: 1

Related Questions