【问题标题】:YouTube Data API v3 Direct Form UploadYouTube 数据 API v3 直接表单上传
【发布时间】:2014-09-21 04:59:38
【问题描述】:

我有一个带有 YouTube Data API v2 的系统设置,可以让用户通过我网站上的表单将视频直接上传到 MY YouTube 帐户(我明白这意味着什么,请保留请记住,我只是简单地描述了该工具的功能)。由于 v2 已被弃用,我至今无法弄清楚如何使用 v3 API 设置相同的系统。另一个快速说明,我希望能够在不将用户发送到 OAuth 页面的情况下执行此操作,因为我不需要访问 他们的 YouTube 帐户。

这里是一个精简版的 PHP 代码,它使它适用于 v2:

<?php
    if ($_GET['op'] == "yt") {
        if ($_GET['status'] == "200") {
            // video upload was successful, $_GET['id'] contains the YouTube video ID for the upload
        } else {
            // video upload failed
        }
    } else {
        require_once("Zend/Loader.php");

        Zend_Loader::loadClass("Zend_Gdata_ClientLogin");
        Zend_Loader::loadClass("Zend_Gdata_YouTube");

        $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
            $username       = "YOUTUBE_USERNAME",
            $password       = "YOUTUBE_PASSWORD",
            $service        = "youtube",
            $client         = null,
            $source         = "My Video Upload Bla Bla Bla",
            $loginToken     = null,
            $loginCaptcha   = null,
            "https://www.google.com/accounts/ClientLogin"
        );

        $yt = new Zend_Gdata_YouTube($httpClient, "My Video Upload Bla Bla Bla", "My Video Upload Bla Bla Bla", "YOUTUBE_DEVELOPER_KEY");
        $yt->setMajorProtocolVersion(2);

        $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
        $myVideoEntry->setVideoTitle("Video Title");
        $myVideoEntry->setVideoDescription("Video Description");
        $myVideoEntry->setVideoCategory("People");

        $accessControlElement = new Zend_Gdata_App_Extension_Element("yt:accessControl", "yt", "http://gdata.youtube.com/schemas/2007", "");
        $accessControlElement->setExtensionAttributes(array(
            array("namespaceUri" => "", "name" => "action", "value" => "list"),
            array("namespaceUri" => "", "name" => "permission", "value" => "denied")
        ));

        $myVideoEntry->setExtensionElements(array($accessControlElement));

        $tokenArray = $yt->getFormUploadToken($myVideoEntry, "http://gdata.youtube.com/action/GetUploadToken");

        $nextUrl = urlencode("http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}?op=yt");

        print "<form action=\"{$tokenArray['url']}?nexturl={$nextUrl}\" method=\"POST\" enctype=\"multipart/form-data\">\n";
        print " <input name=\"file\" type=\"file\" />\n";
        print " <input name=\"token\" type=\"hidden\" value=\"{$tokenArray['token']}\" />\n";
        print " <input value=\"Upload Video File\" type=\"submit\" />\n";
        print "</form>\n";
    }
?>

【问题讨论】:

    标签: youtube youtube-api gdata youtube-data-api


    【解决方案1】:

    我找到了一篇对我有帮助的优秀文章:

    http://jasonwritescode.blogspot.com/2013/09/youtube-browser-based-uploading-with.html

    如果您使用本文来帮助您解决同样的问题,请指出几点。对http://gdata.youtube.com/action/GetUploadToken 的 CURL 调用需要是 HTTPS 而不是 HTTP,并且表单 action="{{post_url}}?next={{next_url}} 需要是 action="{{post_url} }?nexturl={{next_url}}。

    【讨论】:

    • 据我所知,gdata.youtube.com/action/GetUploadToken 似乎是 youtube v2 的一部分。 2015 年 3 月之后可能无法使用
    • 文章讲的是v2,那v3呢?
    • v3 中有 GetUploadToken 的替代品吗?
    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2014-03-10
    • 2017-06-14
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多