4

私はチューブAPIの統合に取り組んでいます.このコードはローカルホストで完全に機能します.しかし、ライブサーバーが機能していません.さらに、ライブサーバーからYouTubeにビデオをアップロードできません.ライブサーバーからYouTubeにビデオをアップロードできません.Iこれは 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>

これに対するおおよその解決策を提供してください....できるだけ早く...

4

1 に答える 1

1

ブラウザベースのアップロードが完了した後に読み込まれるページは、ドキュメントで説明されているように、フォームの属性のnexturl=パラメータとして渡したURLによって決まります。action

そこに値として渡さ<?php echo(urlencode($nexturl)); ?>れているので、アップロードの完了時にページが見つからないという応答が表示される場合は、その値が原因です。

コードを見ると、問題は、$nexturl値が「http%3A%2F%2Fwww.walola.com」であり、これはすでにURLエスケープされており、それを呼び出しurlencode()ていることだと思います。代わりに「 http://www.walola.com」を使用し$nexturlて、それを呼び出してみてくださいurlencode()

于 2013-03-14T20:50:54.407 に答える