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 ...
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()}'";
}
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
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
bon j'ai reussi a la faire marcher en changeant
"facebook/php-sdk-v4" : "4.0.*"
a la place de ...
"facebook/php-sdk-v4" : "~5.0"
mais pourquoi ? j'ai pris pourtant celui de facebook ... https://developers.facebook.com/docs/php/gettingstarted#install-composer
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); )
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 ^^
{
"name": "web-gnp/composer",
"require": {
"facebook/php-sdk-v4": "~5.0",
"google/apiclient": "^1.1"
},
"autoload": {
"psr": {
"App\\": "app/"
}
},
"authors": [
{
"name": "kal",
}
]
}
Tu es sur que "psr" tout seul en autoload fonctionne ? Pour moi c'est soit "psr-0" soit "psr-4"
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 ?
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 ;)
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... .
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