"Facebook connect" class error

Par kaloutch, il y a 10 ans


Bonjour,

j'ai suivi le tuto "facebook connect" a la lettre mais je tombe sur un probleme 'mineur' mais que je n'arrive pas a resoudre ...

Ce que je fais

j'ai bien ajouté le sdk facebook avec composer et update. Ensuite, j'ai ajouté ce code dans un fichier index.php ...

$appId = 'xxxxxxxx'; $appSecret = 'xxxxxxxx'; use App\Facebook\FacebookConnect; require 'composer/vendor/autoload.php'; session_start(); $user = (new FacebookConnect($appId, $appSecret))->connect('http://monsitedegaming.com/index.php'); if(is_string($user)){ echo "<a href='$user'>Se connecter avec Facebook</a>"; }else{ echo "SELECT * FROM users WHERE facebook_id = '{$user->getId()}' OR email = '{$user->getEmail()}'"; }

Ce que j'obtiens

Suite a ca, mon erreur ...

Fatal error: Uncaught Error: Class 'App\Facebook\FacebookConnect' not found in /home/site/monsitedegaming/index-fb.php:85 Stack trace: #0 {main} thrown in /home/site/monsitedegaming/index-fb.php on line 85

Ce que je veux

et la j'ai cherché pendant 8h mais la je ne sais plus ... je voudrais bien comprendre mon erreur.
j'ai reussi avec la version Js mais je souhaite vraiment passer par php.

merci

12 réponses

kaloutch, il y a 10 ans

Pareil avec cette methode ...

$appId = 'xxxxxxxx'; $appSecret = 'xxxxxxxx'; use Facebook\FacebookRedirectLoginHelper; use Facebook\FacebookSession; require 'composer/vendor/autoload.php'; session_start(); // Permet de définir l'AppID / Secret pour le reste des class FacebookSession::setDefaultApplication($appId, $appSecret); $helper = new FacebookRedirectLoginHelper('http://mondomaine.fr/login.php'); echo $helper->getLoginUrl();

erreur ...

Fatal error: Uncaught Error: Class 'Facebook\FacebookSession' not found in /home/site/geekandplay_com/index-fb.php:16 Stack trace: #0 {main} thrown in /home/site/geekandplay_com/index-fb.php on line 16 ===> ( FacebookSession::setDefaultApplication($appId, $appSecret); )
AlexJM, il y a 10 ans

Salut,

Je pense que tu peux essayer en remplaçant :

use Facebook\FacebookRedirectLoginHelper; use Facebook\FacebookSession; require 'composer/vendor/autoload.php';

par

require 'composer/vendor/autoload.php'; use Facebook\FacebookRedirectLoginHelper; use Facebook\FacebookSession;

Faut d'abord load les classes avant de pouvoir les utiliser ^^

kaloutch, il y a 10 ans

j'ai déja essayé et je viens de le refaire mais toujours la meme erreur .

AlexJM, il y a 10 ans

Peux tu montrer ton composer.json ?

kaloutch, il y a 10 ans
{ "name": "web-gnp/composer", "require": { "facebook/php-sdk-v4": "~5.0", "google/apiclient": "^1.1" }, "autoload": { "psr": { "App\\": "app/" } }, "authors": [ { "name": "kal", } ] }
AlexJM, il y a 10 ans

Tu es sur que "psr" tout seul en autoload fonctionne ? Pour moi c'est soit "psr-0" soit "psr-4"

kaloutch, il y a 10 ans

je viens de test psr-0 et psr-4 et fais un composer update. mais rien ne change :(

{ "name": "web-gnp/composer", "require": { "facebook/php-sdk-v4": "~5.0", "google/apiclient": "^1.1" }, "autoload": { "psr-0": { "App\\": "app/" } }, "authors": [ { "name": "kal" } ] }

j'ai pas tres bien compris le principe de 'autoload' , c'est obligatoire ? esque c'est pas " "App\": "app/" " qui joue sur mon erreur ?

AlexJM, il y a 10 ans

C'est pas composer update, c'est composer dumpautoload ;)
En faite si tu as des fichiers par exemple plein de classes dans un dossier classes, pour éviter de faire :

require 'classes/...'; require 'classes/...';

2000 fois, tu utilises les namespace ainsi que l'autoload de composer pour te simplifier la vie et à n'avoir que à require le fichier de composer ;)

kaloutch, il y a 10 ans

ok merci , sinon ca ne marche toujours pas (psr-0 ou psr-4)
j'ai bien " Generating autoload files " mais toujours la meme erreur , je ne comprends pas ....

dans composer/vendor/composer/autoload_namespaces.php il devrais y avoir facebook non ? j'ai 0 ligne.

<?php // autoload_namespaces.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( );

sinon composer/vendor/composer/autoload_classmap.php j'ai +3000 lignes avec google_service... .

AlexJM, il y a 10 ans

Peux-tu me montrer la manière dont tes fichiers sont rangés ?

AlexJM, il y a 10 ans

Je pense avoir compris pourquoi cela ne fonctionne pas. Car la méthode que tu utilises c'est pour l'api de la avant-dernière version. Pour la dernière tu dois utiliser,

$fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.5', ]);

C'est possible ? Avec la manière que je viens de te mettre cela fonctionne