Error: Class 'Facebook\\FacebookSession' not found with the facebook PHP SDK

匿名 (未验证) 提交于 2019-12-03 01:14:02

问题:

I am having a hard time with facebook's SDK documentation. I downloaded the SDK from Github and added it into my PHP project.

Here is the file system:

here is my code so far:

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 

I get this error

Fatal error: Class 'Facebook\FacebookSession' not found in /homepages/2/d184071366/htdocs/isgeek/fb/FaRepost/test.php on line 9 

At updated my PHP version, so the issue does not comme from here. It seems like the PHP files are not found. I read this question (Facebook SDK v4 for PHP Minimal Example) but it does not help.

Where does this comme from?

回答1:

  1. PHP Version 5.4.0 or higher is required.
  2. Facebook uses Implementations of PSR-4. Hence You dont have to use require or require_once or include or include_once.
  3. In PSR-4, you just need packagename(namespace) i.e. directory name and class file name only.It will register classes dynamically from given package name.Ex.:- use packaname\classname.
  4. You will find the file autoload.php in Facebook SDK Autoload root directory.
  5. use is used to load dynamic classes using spl_autoload_register
  6. Facebook register all library using autoload.php or autoload_fb.php
  7. You have to find autoload.php in your downloaded library like facebook-php-sdk-v4-4.0-dev/.
  8. If you just wants to use Facebook library from download source.Then you have to copy autoload.php in your root directory or in Facebook directory.
  9. defined constant for FACEBOOK_SDK_V4_SRC_DIR i.e. path of the facebook library
  10. You need to do as below to use in php

Note: I have copied /var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/src/Facebook directory and /var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/autoload.php file in root directory /var/www/stack/24006673/

define('FACEBOOK_SDK_V4_SRC_DIR','/var/www/stack/24006673/Facebook/'); require_once("autoload.php"); use Facebook\FacebookSession; use Facebook\FacebookRequest; use Facebook\GraphUser; use Facebook\FacebookRequestException; use Facebook\FacebookRedirectLoginHelper; FacebookSession::setDefaultApplication('YOUR_APP_ID','YOUR_APP_SECRET'); 


回答2:

I found the solution here

I did not code in php for some time now and things have changed. use Facebook\FacebookSession; is not enough. You need to add a require_once too.

require_once( 'Facebook/FacebookSession.php' ); 

Edit: for a more detailed solution, please checkout the answer below.



回答3:

This code worked for me

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 'Login'; } 


回答4:

You should be careful with all the paths!

I cannot see "autoload.php" in your file system. In my case I put the content of PHP SDK in the directory "fb", and use the paths (added DIR . into the "define" line in comparison with the example of 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; <...>

It helped to avoid that kind of the error.



回答5:

Rename all Facebook files and directories to lower case. Auto-loading on *nix automatically lowercases all files names.



回答6:

No need to use require or include. I solved it. Just use following line at the top of your script:

define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-php-sdk-v4/src/Facebook/'); 

and you are done.



回答7:

require_once 'Facebook/autoload.php'; $fb = new Facebook\Facebook([   'app_id' => '{app_id}',   'app_secret' => '{app_secret}',   'default_graph_version' => 'v2.2', ]); 

-just add this code .it works. enter your app_id and app_secret of your facebookAPP



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!