Erreur généré par Gdata de Zend en utilisation avec l'API youtube
Bonjour,
Je viens poster ici un message de détresse, cela fait deux jours que je m’arrache les cheveux à essayer de trouver l'erreur.
Je m'explique, j'ai suivi le tuto pour permettre à l'utilisateur de pouvoir uploader une vidéo sur mon site pour que cette dernière se mette sur ma chaîne youtube.
Le problème est que la vidéo se met bien sur ma chaîne mais apres le téléchargement de la vidéo j'ai un message d'erreur de Gdata:
Code:
1 2
|
Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message ' in C:\wamp\www\Projetyoutube\Zend\Gdata\App.php on line 714 |
Ainsi que:
Code:
1 2
|
Zend_Gdata_App_HttpException: Expected response code 200, got 400 Invalid value for parameter: username in C:\wamp\www\Projetyoutube\Zend\Gdata\App.php on line 714 |
Je ne comprend pas...
Code permettant l'upload de la vidéo:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
<?php
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é';
$applicationId = 'applicationId';
$clientId = 'idclient';
$username = "jonathanaffre@gmail.com";
$password = "motdepassei";
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
$username,$password,'youtube',null,'MonSiteWeb',null,null,$authenticationURL
);
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
$myVideoEntry->setVideoTitle('Titre');
$myVideoEntry->setVideoDescription('Description de ma video');
$myVideoEntry->setVideoCategory('Sports');
// Récupération du jeton
$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
$tokenValue = $tokenArray['token'];
$postUrl = $tokenArray['url'];
$nextUrl = 'http://localhost/Projetyoutube/upload_video_ok.php';
//echo $tokenValue;
echo $postUrl;
// Affichage du formulaire
$form = '<form action="'. htmlspecialchars($postUrl, ENT_QUOTES) .'?nexturl='
. urlencode($nextUrl) . '&username='.$username.'" method="post" enctype="multipart/form-data">
Fichier vidéo : <input name="file" type="file"/>
<input name="token" type="hidden" value="'. $tokenValue .'"/>
<input value="Envoyer la vidéo" type="submit" />
</form>';
echo $form;
?> |
Et ma page qui gère les erreurs:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
<?php
if(isset($_GET['status']) AND $_GET['status']==200) {
$videoId = $_GET['id'];
$username = "username";
$location = 'http://gdata.youtube.com/feeds/api/users/'.$username.'/uploads/' . $videoId;
$message='';
require_once 'Zend/Gdata/YouTube.php';
$yt = new Zend_Gdata_YouTube();
$myVideoEntry = $yt->getVideoEntry(null, $location);
$videoControl = $myVideoEntry->getControl();
$videoState = $myVideoEntry->getVideoState();
if($videoControl==null) {
$message = "Votre vidéo a été enregistrée avec succès";
}
elseif($videoState)
{
$videoStateName = $videoState->getName();
switch($videoStateName) {
case 'rejected' :
if($videoState->getText()=='Duplicate video') {
$message = "Cette vidéo a déjà été envoyée. Merci de choisir
un autre fichier.";
} else {
$message = "Votre vidéo n'a pas été acceptée car elle ne
respecte pas les conditions d'utilisation de YouTube.
Peut-être est-elle trop longue ou ne respecte pas certains
droits d'auteur.";
}
break;
case 'failed' :
if($videoState->getText()=='Unable to convert video file') {
$message = "Echec lors de l'envoi : Impossible de convertir
le fichier vidéo. Vérifier qu'il s'agit bien d'un fichier
vidéo.";
}
else {
$message = "Votre vidéo n'a pas été acceptée car elle ne
respecte pas les conditions d'utilisation de YouTube.
Peut-être est-elle trop longue ou ne respecte pas certains
droits d'auteur.";
}
break;
case 'processing' : $message = "Votre vidéo a bien été envoyée. Elle
est désormais en cours de traitement et sera
publiée d'ici quelques heures.";
break;
default: $message = "Votre vidéo a bien été envoyée. Elle est
désormais en cours de traitement et sera publiée d'ici
quelques heures.";
}
}
else {
$message = "Votre vidéo a bien été envoyée. Elle est désormais en cours
de traitement et sera publiée d'ici quelques heures.";
}
}
else {
$message = "Une erreur s'est produite lors de l'upload du fichier.
Merci de contacter le webmaster si ce problème persiste";
}
echo $message;
?> |
Voila... je sais que cette API est très bien documentée mais je n'ai pas trouvé la solution à mon problème..
Merci à ceux qui prendrons la peine de lire mon post! ;)