Question

J'ai eu une configuration système avec l'API V2 de YouTube Data V2 qui permettrait à un utilisateur de télécharger une vidéo directement sur mon compte YouTube via un formulaire sur mon site (je comprends les implications de cela, veuillez conserverà l'esprit que je ne fais que donner une description à os nus de ce que l'outil a fait).J'ai jusqu'à présent été incapable de comprendre comment configurer ce même système avec l'API V3 maintenant que V2 est obsolète.Une autre note rapide, j'aimerais pouvoir le faire sans envoyer l'utilisateur à la page OAuth car je n'ai pas besoin d'accéder à leur compte YouTube.

Voici une version compliquée du code PHP qui a fait ce travail pour 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";
    }
?>

Était-ce utile?

La solution

J'ai trouvé un excellent article qui m'a aidé avec ceci:

http://jasonwritescode.blogspot.com/2013/09 / YouTube-navigateur-Basé-uploading-with.html

Un couple de choses à signaler si vous utilisez cet article pour vous aider au même problème.L'appel en curl à http://gdata.youtube.com/action/getuploadToken doit être à https pas http et le formulaire action="{{post_url}}? Suivant= {{{next_url}} doit être action=" {{post_url}}? Nexturl ={{NEXT_URL}}.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top