سؤال

لدي نظام الإعداد مع بيانات يوتيوب API v2 التي من شأنها أن تسمح للمستخدم تحميل الفيديو مباشرة إلى بلدي حساب يوتيوب عبر النموذج على بلدي الموقع (لقد فهم الآثار المترتبة على هذا ، يرجى أن نضع في اعتبارنا أن أنا مجرد إعطاء عظام وصف ما فعل أداة).أنا حتى الآن غير قادر على معرفة كيفية إعداد هذا النظام نفسه مع API v3 الآن v2 هو مستنكر.آخر ملاحظة سريعة ، أود أن تكون قادرة على القيام بذلك دون إرسال المستخدم إلى أوث الصفحة منذ كنت لا تحتاج إلى الوصول إلى بهم حساب يوتيوب.

هنا هو مشذبة نسخة من كود 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";
    }
?>
هل كانت مفيدة؟

المحلول

لقد وجدت مقال ممتاز ساعدني مع هذا:

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

بضعة أشياء أن نشير إلى إذا كنت تستخدم هذه المقالة لمساعدتك في نفس المشكلة.حليقة الدعوة إلى http://gdata.youtube.com/action/GetUploadToken يحتاج إلى أن HTTPS لا HTTP شكل action="{{post_url}}?التالي={{next_url}} يجب أن يكون action="{{post_url}}?nexturl={{next_url}}.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top