J'ai de la difficulté avec la documentation de Facebook sur le SDK. J'ai téléchargé le SDK de Github et je l'ai ajouté à mon projet PHP.
Voici le système de fichiers:
├── Facebook
│ ├── FacebookAuthorizationException.php
│ ├── FacebookCanvasLoginHelper.php
│ ├── FacebookClientException.php
│ ├── FacebookJavaScriptLoginHelper.php
│ ├── FacebookOtherException.php
│ ├── FacebookPermissionException.php
│ ├── FacebookRedirectLoginHelper.php
│ ├── FacebookRequest.php
│ ├── FacebookRequestException.php
│ ├── FacebookResponse.php
│ ├── FacebookSDKException.php
│ ├── FacebookServerException.php
│ ├── FacebookSession.php
│ ├── FacebookThrottleException.php
│ ├── GraphLocation.php
│ ├── GraphObject.php
│ ├── GraphSessionInfo.php
│ ├── GraphUser.php
│ └── fb_ca_chain_bundle.crt
└── test.php
voici mon code jusqu'à présent:
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
FacebookSession::setDefaultApplication('*******','******');
$helper = new FacebookRedirectLoginHelper('http://isgeek.eu/fb/FaRepost/return.php');
$loginUrl = $helper->getLoginUrl();
// Use the login url on a link or button to redirect to Facebook for authentication
Je reçois cette erreur
Fatal error: Class 'Facebook\FacebookSession' not found in /homepages/2/d184071366/htdocs/isgeek/fb/FaRepost/test.php on line 9
À la mise à jour de ma version PHP, le problème ne vient donc pas d'ici. Il semble que les fichiers PHP ne soient pas trouvés. J'ai lu cette question ( Facebook SDK v4 pour PHP Exemple minimal ), mais cela n’aide en rien.
D'où vient-il?
J'ai trouvé la solution ici
Je n'ai pas codé en php depuis un certain temps et les choses ont changé. use Facebook\FacebookSession;
n'est pas suffisant. Vous devez également ajouter un require_once
.
require_once( 'Facebook/FacebookSession.php' );
Edit: pour une solution plus détaillée, veuillez vérifier la réponse ci-dessous.
Ce code a fonctionné pour moi
session_start();
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/Entities/AccessToken.php' );
require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookCurl;
// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication('XXXX', 'XXXXXXXXXXXX');
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'http://localhost/demo/demo2/demo2.php' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
}
// see if we have a session
if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject();
// print data
echo print_r( $graphObject, 1 );
} else {
// show login url
echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}
Vous devriez faire attention avec tous les chemins!
Je ne vois pas "autoload.php" dans votre système de fichiers. Dans mon cas, j'ai mis le contenu de PHP SDK dans le répertoire "fb" et utilisé les chemins d'accès (ajoutés DIR. Dans la ligne "define" par rapport à l'exemple de https : //developers.facebook.com/docs/php/gettingstarted/4.0.0 )
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/fb/src/Facebook/');
require __DIR__ . '/fb/autoload.php';
echo FACEBOOK_SDK_V4_SRC_DIR; //to check if the paths are correct
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
<...>
Cela a aidé à éviter ce genre d'erreur.
require_once 'Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '{app_id}',
'app_secret' => '{app_secret}',
'default_graph_version' => 'v2.2',
]);
-Juste ajouter ce code .il fonctionne . entrez votre app_id et app_secret de votre facebookAPP
Pas besoin d'utiliser require
ou include
. Je l'ai résolu. Utilisez simplement la ligne suivante en haut de votre script:
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-php-sdk-v4/src/Facebook/');
et vous avez terminé.