bonjour à tous
alors je viens vous exposer un problème que je rencontre en ce moment.
je programme en ce moment un site web en php au sein duquel un utilisateur connecté peux uploader un fichier video dans un formulaire. n'ayant pas assez d'espace dans mon hébergement, je veux faire en sorte que le fichier uploadé aille directement sur mon compte youtube.j'ai d'abord essayé la solution en utilisant le code fourni dans la doc avec le formulaire généré dans le code php.mais le problème est que ce formulaire envoie directement les données à youtube donc je ne peux pas le fusionner avec mon propre formulaire. alors j'ai décidé d'utiliser curl pour effectuer le chargement du fichier sur youtube en utilisant ce code:
Code PHP :
<?php
//inclusion des bibliothèques youtube
require_once 'Zend/Gdata/YouTube.php';
require_once 'Zend/Gdata/ClientLogin.php';
// configuration et identifiants
$authenticationURL = 'https://www.google.com/youtube/accounts/ClientLogin';
$developerKey = 'ma clé'; // Clé développeur
$applicationId = 'appid'; // Identifiant de l'application
$clientId = 'cliid'; // Identifiant Client
$username = 'username'; // Login de votre compte YouTube
$password = 'password'; // Mot de passe de votre compte YouTube
// authentification via la méthode HTTP
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
$username,$password,'youtube',null,$applicationId,null,null,$authenticationURL
);
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
// création d'un nouvel objet video
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
// on donne des informations sur notre vidéo
$myVideoEntry->setVideoTitle('Video news');
$myVideoEntry->setVideoDescription('Video de description de la news');
$myVideoEntry->setVideoCategory('Music'); // La catégorie doit correspondre à une catégorie YouTube
$myVideoEntry->SetVideoTags('motcle1, motcle2');
$myVideoEntry->setVideoPrivate();
$myVideoEntry->SetVideoDeveloperTags(array('mydevtag','anotherdevtag'));
// Récupération du token
$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
$postUrl = $tokenArray['url'];
$tokenValue = $tokenArray['token'];
// Page sur laquelle sera renvoyé l'utilisateur après la validation
// du formulaire (URL de retour)
$nextUrl = 'http://localhost/eclipse/monsite/views/youtube_verif.php';
// Affichage du formulaire
/*$form = '
<form action="' . $postUrl . '?nexturl=' . $nextUrl .'" method="post" enctype="multipart/form-data">
<input name="file" type="file" />
<input name="token" type="hidden" value="' . $tokenValue . '" />
<input type="submit" value="Envoyer la vidéo"/>
</form>';
echo $form;*/
$post = array(
// Le token
'token' => $tokenValue,
// Le fichier à uploader
'file' => '@' . realpath('test_reagae.avi.sfk')
);
// On effectue la requête avec cURL
$ch = curl_init($postUrl.'?nexturl='.$nextUrl);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$ret = curl_exec($ch);
if (!$ret) {
echo curl_error($ch);
} else {
echo 'Envoi OK !';
}
curl_close($ch);
?>
la bonne nouvelle est que le fichier est bien envoyé sur mon compte youtube, mais la mauvaise nouvelle est que normalement, youtube doit me renvoyer l'id de la video que je viens d'uploader et me rediriger vers l'adresse $nextUrl mais il ne le fait pas.
ce détail etant très embêtant car je voudrais pouvoir sauvegarder l'id de la video pour un affichage ultérieur, quelqu'un aurait-il l'amabilité de jeter un coup d'oeil à ce problème et me donner une piste pour le résoudre svp?
merci à vous
Lez-J