Domanda

Ho avuto un'impostazione del sistema con i dati di YouTube API V2 che consentirebbe a un utente di caricare un video direttamente a My Account YouTube tramite un modulo sul mio sito (capisco le implicazioni di questo, per favoreIn mente che sto solo dando una descrizione di ossa nude di ciò che l'utensile ha fatto).Non sono stato finora in grado di capire come configurare questo stesso sistema con l'API V3 ora che V2 è deprecato.Un'altra nota rapida, vorrei essere in grado di farlo senza inviare l'utente alla pagina OAuth poiché non ho bisogno di accedere a il loro account YouTube.

Ecco una versione sottile del codice PHP che ha reso questo lavoro per 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";
    }
?>
.

È stato utile?

Soluzione

Ho trovato un articolo eccellente che mi ha aiutato con questo:

http://jasonwritescode.blogspot.com/2013/09 / YouTube-Browser-basato-uploading-con.html

Un paio di cose da segnalare se si utilizza questo articolo per aiutarti con lo stesso problema.La chiamata richiamata a http://gdata.youtube.com/action/getutuploadtoken deve essere a https non http e il modulo action="{{post_url}}? successivo= {{next_url}} deve essere azione=" {{post_url}}? Nexturl ={{next_url}}.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top