문제

YouTube Data API V2가 내 사이트의 양식을 통해 YouTube 계정에 직접 비디오를 업로드 할 수있는 YouTube Data API v2가 있습니다 (나는 이것의 의미를 이해하고,나는 도구가 무엇을했는지에 대한 벌거 벗은 뼈 설명을주는 것을 염두에두고 있습니다.)V2가 사용되지 않는 V3 API로 V3 API 로이 동일한 시스템을 설정하는 방법을 알아낼 수 없었습니다.또 다른 빠른 노트, YouTube 계정에 액세스 할 필요가 없으므로 사용자를 OAuth 페이지로 보내지 않고이 작업을 수행 할 수 있습니다.

v2를 위해이 작업을 수행 한 PHP 코드의 슬림 한 버전이 있습니다.

<?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";
    }
?>
.

도움이 되었습니까?

해결책

나는 이것을 이것으로 도왔던 훌륭한 기사를 발견했다 :

http://jasonwritescode.blogspot.com/2013 / 09 / YouTube-Browser 기반 업로드 - with.html

이 기사를 사용하여 같은 문제를 해결하기 위해이 기사를 사용하는 경우 몇 가지 사항을 지적 할 것입니다. http://gdata.youtube.com/cate/getuploadtoken 에 대한 krl 호출 https http 및 form action="{{post_url}}}? next= {{next_URL}}="{{post_url}}가 필요합니다 nextURL ={{NEXT_URL}}.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top