Pregunta

Tuve una configuración del sistema con la API de datos de YouTube que permitiría que un usuario cargue un video directamente a mi la cuenta de youtube a través de un formulario en mi sitio (entiendo las implicaciones de esto, por favor, mantengaTen en cuenta que solo estoy dando una descripción de los huesos desnudos de lo que hizo la herramienta).Hasta ahora, he podido descubrir cómo configurar este mismo sistema con la API V3 ahora que V2 está en desuso.Otra nota rápida, me gustaría poder hacer esto sin enviar al usuario a la página de OAUTH, ya que no necesito acceder a su cuenta de YouTube.

Aquí hay una versión más adelgada del código PHP que hizo este trabajo para 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";
    }
?>

¿Fue útil?

Solución

Encontré un excelente artículo que me ayudó con esto:

http://jasonwritescode.blogspot.com/2013/09 / YouTube-Browser-Based-Subiring-with.html

Un par de cosas para señalar si usa este artículo para ayudarlo con el mismo problema.La llamada de rizo a http://gdata.youtube.com/action/getuploadtoken debe ser para ser https no http y el formulario acción="{{post_url}}? Siguiente= {{next_url}} necesita ser acción=" {{post_url}}? nexturl ={{next_url}}.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top