Bonjour,
J'ai suivi le tutoriel sur l'API youtube, mais j'obtiens une erreur, probablement liée à Composer, j'ai donc suivi le tutoriel composer, je n'ai aucune erreur mais je ne suis pas sûr d'avoir tout compris, je vous post donc mon erreur pour savoir si elle provient d'un package composer, ou autre. Voici mes erreurs :
Call Stack
Time Memory Function Location1 0.0008 239944 {main}( ) ...\youtube2.php:0
2 0.0197 1957688 Google_Service_YouTube_Resource_Search->listSearch( ) ...\youtube2.php:7
3 0.0197 1959488 Google_Service_Resource->call( ) ...\Search.php:183
4 0.0277 2470120 Google_Client->execute( ) ...\Resource.php:232
5 0.0376 3253760 Google_Http_REST::execute( ) ...\Client.php:788
6 0.0382 3295432 Google_Task_Runner->run( ) ...\REST.php:58
7 0.0382 3295608 call_user_func_array:{C:\wamp64\www\Skeeno\vendor\google\apiclient\src\Google\Task\Runner.php:176} ( ) ...\Runner.php:176
8 0.0382 3296280 Google_Http_REST::doExecute( ) ...\Runner.php:176
Merci d'avance,
Cordialement.
Et de cette manière ?
$client->setHttpClient(new \GuzzleHttp\Client(array(
'verify' => false,
)));
à la place de
$client->getHttpClient()->setDefaultOption('verify', false);
le soucis viens de ton certif ssl (que tu n'a surement pas en local)
Le plus simple étant de désactivé la vérification de Guzzle,
admetton tu as:
$client = new Guzzle\Http\Client(); //Objet qui appelle l'api
$client->setDefaultOption('verify', false); // désactive la vérification ssl (à faire avant le call)
Merci, cette solution a résolu tous les problèmes, mais hélas elle m'en a crée un autre :(
Fatal error: Class 'Guzzle\Http\Client' not found in C:\wamp64\www\Skeeno\views\youtube2.php on line 4
Call Stack
1 0.0006 241080 {main}( ) ...\youtube2.php:0
Elle concerne le "new Guzzle\Http\Client()"
<?php
require('../vendor/autoload.php');
$client = new Google_Client();
$client = new Guzzle\Http\Client(); //Objet qui appelle l'api
$client->setDefaultOption('verify', false); // désactive la vérification ssl (à faire avant le call)
$client-> setDeveloperKey('');
$youtube = new Google_Service_YouTube($client);
$response = $youtube->search->listSearch('id, snippet', ['channelId' => "UCA6yQHHrdaOFDak7xzf1shw", 'order' => 'date',
'maxResults' => 9, 'type' => 'video']);
?>
<h1> videos</h1>
<div class="row">
<?php foreach($response['items'] as $video): ?>
<div class="col-md-4">
<div class="panel panel-primary">
<div class="panel-heading"><?= $video['snippet']['title']; ?> </div>
</div>
</div>
<?php endforeach?>
</div>
C'est le code de l'exemple ^^
Sur la papier tu devrait pas avoir de soucis, tu as essayé la commande composer dump-autoload ?
Je n'ai pas programmé depuis quelques mois et je n'ai jamais été trop à l'aise avec le php, encore moins avec ce qui touche au composer donc je ne sais pas ce qu'est le dump-autoload ^^'
Le dump-autoload est une commande composer qui va te permettre de recharché l'autoloader (ce qui t'inclu t'es class en soit) en te rendant dans ton dossier de projet et en tapant la commande composer dump-autoload dans ton invité de commande, tu ne devrais logiquement plus avoir de soucis
Après avoir executé cette commande dans le dossier concerné via powershell, j'ai toujours la même erreur :/
Ah je viens de capter un truc
change ton code pour ça:
<?php
require('../vendor/autoload.php');
$client = new Google_Client();
$client->getHttpClient()->setDefaultOption('verify', false);
$client-> setDeveloperKey('');
$youtube = new Google_Service_YouTube($client);
$response = $youtube->search->listSearch('id, snippet', ['channelId' => "UCA6yQHHrdaOFDak7xzf1shw", 'order' => 'date',
'maxResults' => 9, 'type' => 'video']);
?>
L'erreur n'est plus présente mais d'autres apparaissent xD
Catchable fatal error: Argument 3 passed to GuzzleHttp\Client::request() must be of the type array, boolean given, called in C:\wamp64\www\Skeeno\vendor\guzzlehttp\guzzle\src\Client.php on line 87 and defined in C:\wamp64\www\Skeeno\vendor\guzzlehttp\guzzle\src\Client.php on line 126
Call Stack
1 0.0006 241360 {main}( ) ...\youtube2.php:0
2 0.0142 1710784 setDefaultOption ( ) ...\youtube2.php:4
3 0.0142 1711280 GuzzleHttp\Client->__call( ) ...\youtube2.php:4
4 0.0142 1711352 GuzzleHttp\Client->request( ) ...\Client.php:87
Toujours pas :(
Fatal error: Uncaught exception 'Google_Service_Exception' with message ' in C:\wamp64\www\Skeeno\vendor\google\apiclient\src\Google\Http\REST.php on line 118
( ! ) Google_Service_Exception: { "error": { "errors": [ { "domain": "usageLimits", "reason": "ipRefererBlocked", "message": "The request did not specify any referer. Please ensure that the client is sending referer or use the API Console to remove the referer restrictions.", "extendedHelp": "https://console.developers.google.com/apis/credentials?project=631292421283" } ], "code": 403, "message": "The request did not specify any referer. Please ensure that the client is sending referer or use the API Console to remove the referer restrictions." } } in C:\wamp64\www\Skeeno\vendor\google\apiclient\src\Google\Http\REST.php on line 118
Call Stack
1 0.0006 241008 {main}( ) ...\youtube2.php:0
2 0.0261 2617816 Google_Service_YouTube_Resource_Search->listSearch( ) ...\youtube2.php:10
3 0.0261 2619616 Google_Service_Resource->call( ) ...\Search.php:183
4 0.0354 3131184 Google_Client->execute( ) ...\Resource.php:232
5 0.0386 3253440 Google_Http_REST::execute( ) ...\Client.php:788
6 0.0395 3295064 Google_Task_Runner->run( )
l'api te réponds c'est bon signe.
Elle te réponds que tu n'a pas configurer ton compte google en soit pour faire des requêtes sur l'api, clique sur le lien de l'erreur
Echec du chargement des comptes de service.
Pourtant j'ai bien la clé API, l'API youtube data activée, j'ai même activé des restrictions. C'est peut-être dû à ça ? la restrictions pour le local j'ai mis localhost/skeeno (mon répertoire de travail)
Plus aucune restriction sur l'API, par contre dans l'autorisation Oauth je n'ai rien de configuré, ni en validation de domaine (mais le site est encore en local atm donc ça devrait pas poser de soucis)
Je ne vois pas d'où vient l'erreur du côté de Google :/
Je viens de renouveler la clé, je n'ai plus d'erreurs ! Je ne comprend pas trop d'où venait le problème, mais tu as trouvé la solution, merci beaucoup ! :)