UETUBE DATA API V3 Modulo diretto Carica
-
21-12-2019 - |
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";
}
?>
. 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}}.