API youtube/Composer

Par Astarehan, il y a 8 ans


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 Location

1 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.

20 réponses

Astarehan, il y a 8 ans

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 ^^'

Sparkosis, il y a 8 ans

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)
Astarehan, il y a 8 ans

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

Time Memory Function Location

1 0.0006 241080 {main}( ) ...\youtube2.php:0
Elle concerne le "new Guzzle\Http\Client()"

Sparkosis, il y a 8 ans

Envoie ton code ce sera plus simple :)

Astarehan, il y a 8 ans

<?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 ^^

Sparkosis, il y a 8 ans

Ton composer.json à bien guzzle ? dans le require

Astarehan, il y a 8 ans

Oui, "guzzlehttp/guzzle": "~6.0"

Sparkosis, il y a 8 ans

Sur la papier tu devrait pas avoir de soucis, tu as essayé la commande composer dump-autoload ?

Sparkosis, il y a 8 ans

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

Astarehan, il y a 8 ans

Après avoir executé cette commande dans le dossier concerné via powershell, j'ai toujours la même erreur :/

Sparkosis, il y a 8 ans

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']); ?>
Astarehan, il y a 8 ans

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

Time Memory Function Location

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

Astarehan, il y a 8 ans

Il manque un argument pour le setdefaultoption ?

Sparkosis, il y a 8 ans

Et de cette manière ?

$client->setHttpClient(new \GuzzleHttp\Client(array( 'verify' => false, )));

à la place de

$client->getHttpClient()->setDefaultOption('verify', false);
Sparkosis, il y a 8 ans

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

Astarehan, il y a 8 ans

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)

Astarehan, il y a 8 ans

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

Time Memory Function Location

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( )

Astarehan, il y a 8 ans

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 :/

Astarehan, il y a 8 ans

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 ! :)

Sparkosis, il y a 8 ans

Parfait :) bon coding :)