错误:Class';Facebook\FacebookSession';在facebook PHP SDK中找不到

错误:Class';Facebook\FacebookSession';在facebook PHP SDK中找不到,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,我很难理解facebook的SDK文档。我从Github下载了SDK,并将其添加到我的PHP项目中 以下是文件系统:    ├── Facebook    │   ├── FacebookAuthorizationException.php    │   ├── FacebookCanvasLoginHelper.php    │   ├── FacebookClientException.php    │   ├── FacebookJavaScriptLoginHelper.php    │

我很难理解facebook的SDK文档。我从Github下载了SDK,并将其添加到我的PHP项目中

以下是文件系统:

   ├── 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
以下是我目前的代码:

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
我得到这个错误

Fatal error: Class 'Facebook\FacebookSession' not found in /homepages/2/d184071366/htdocs/isgeek/fb/FaRepost/test.php on line 9
在更新了我的PHP版本后,问题就不再出现了。似乎找不到PHP文件。我读了这个问题(),但没有帮助

这个命令来自哪里?

我找到了解决方案

我已经有一段时间没有用php编写代码了,事情已经改变了<代码>使用Facebook\FacebookSession是不够的。您还需要添加一次
require\u

require_once( 'Facebook/FacebookSession.php' );

编辑:有关更详细的解决方案,请查看下面的答案。

将所有Facebook文件和目录重命名为小写。自动加载*nix会自动将所有文件名小写

  • 需要PHP版本5.4.0或更高版本
  • Facebook使用。因此,您不必使用require或require\u once或include或include\u once
  • 在PSR-4中,您只需要packagename(名称空间),即目录名和类文件名。它将根据给定的包名动态注册类。例如:-
    使用packagename\classname
  • 您将在根目录中找到文件autoload.php
  • use
    用于使用
    spl\u autoload\u寄存器加载动态类
  • Facebook使用
    autoload.php
    autoload\u fb.php
  • 您必须在下载的库中找到autoload.php,如
    facebook-php-sdk-v4-4.0-dev/
  • 如果您只想从下载源使用Facebook库,那么您必须在根目录或Facebook目录中复制autoload.php
  • 为FACEBOOK\u SDK\u V4\u SRC\u DIR定义的常量,即FACEBOOK库的路径
  • 要在php中使用,需要执行以下操作
  • 注意:我复制了
    /var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/src/facebook
    目录和
    /var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/autoload.php
    根目录中的文件
    /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');
    

    这个代码对我有用

    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>';
    }
    
    session_start();
    需要_一次('Facebook/FacebookSession.php');
    需要_一次('Facebook/Facebook重定向loginhelper.php');
    需要_一次('Facebook/FacebookRequest.php');
    需要_一次('Facebook/FacebookResponse.php');
    只需_一次('Facebook/FacebookSDKException.php');
    需要_一次('Facebook/FacebookRequestException.php');
    需要_一次('Facebook/Facebook authorizationexception.php');
    需要一次_('Facebook/GraphObject.php');
    需要_once('Facebook/Entities/AccessToken.php');
    需要_一次('Facebook/HttpClients/Facebook-httpable.php');
    只需要_一次('Facebook/HttpClients/FacebookCurlHttpClient.php');
    需要_一次('Facebook/HttpClients/FacebookCurl.php');
    使用Facebook\FacebookSession;
    使用Facebook\FacebookRedirectLoginHelper;
    使用Facebook\FacebookRequest;
    使用Facebook\FacebookResponse;
    使用Facebook\FacebookSDKException;
    使用Facebook\FacebookRequestException;
    使用Facebook\FacebookAuthorizationException;
    使用Facebook\GraphObject;
    使用Facebook\Entities\AccessToken;
    使用Facebook\HttpClient\FaceBookHttpTable;
    使用Facebook\HttpClient\FacebookCurlHttpClient;
    使用Facebook\HttpClients\FacebookCurl;
    //具有应用程序id(APPID)和机密(secret)的初始化应用程序
    FacebookSession::setDefaultApplication('XXXX','XXXXXXXXXXXXXX');
    //具有重定向uri的登录帮助程序
    $helper=新的FacebookRedirectLoginHelper('http://localhost/demo/demo2/demo2.php' );
    试一试{
    $session=$helper->getSessionFromRedirect();
    }捕获(FacebookRequestException$ex){
    //当Facebook返回错误时
    }捕获(例外$ex){
    //验证失败或其他本地问题时
    }
    //看看我们是否有一个会议
    国际单项体育联合会(isset($届会)){
    //用户数据的图形api请求
    $request=newfacebookrequest($session,'GET','/me');
    $response=$request->execute();
    //得到回应
    $graphObject=$response->getGraphObject();
    //打印数据
    回声打印(graphObject,1);
    }否则{
    //显示登录url
    回声';
    }
    
    您应该小心所有路径

    我无法在您的文件系统中看到“autoload.php”。在我的例子中,我将PHP SDK的内容放在目录“fb”中,并使用路径(与的示例相比,将路径添加到“define”行中)

    define('FACEBOOK_-SDK_-V4_-SRC_-DIR','uu-DIR_u'./fb/SRC/FACEBOOK/');
    需要“目录”/fb/autoload.php';
    echo FACEBOOK_SDK_V4_SRC_DIR//检查路径是否正确
    使用Facebook\FacebookSession;
    使用Facebook\FacebookRequest;
    使用Facebook\GraphUser;
    使用Facebook\FacebookRequestException;
    

    它有助于避免这种错误。

    无需使用
    require
    include
    。 我解决了。只需在脚本顶部使用以下行:

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

    require_once 'Facebook/autoload.php';
    $fb = new Facebook\Facebook([
      'app_id' => '{app_id}',
      'app_secret' => '{app_secret}',
      'default_graph_version' => 'v2.2',
    ]);
    
    -只要加上这个代码,就行了。
    输入你的facebookAPP的app_id和app_secret

    facebooksession文件中有什么,是否有使用此名称定义的类?可能的facebooksession类副本在SDK的v5.x中不再可用(仍在php-SDK-v4名称下)。可以在这里找到一篇博客文章,它将帮助您从SDK的4.x迁移到5.x。是的,这有点奇怪,在Facebook的文档中,他们没有提到要包含哪些文件!您必须从下载的库中包括autoload.php,如facebook-php-sdk-v4-4.0-dev/。答案如下:below@rajeshujade你能在这里发布你的示例代码吗,我这么做了,但它不起作用,我尝试了几乎所有的方法,它仍然说相同的错误类不起作用found@IftikarUrrhmanKhan我已经补充了这个问题的答案。你也可以查看这个链接-你能解释更多关于PSR-4的信息吗?我不知道这是不是我的错
    require_once 'Facebook/autoload.php';
    $fb = new Facebook\Facebook([
      'app_id' => '{app_id}',
      'app_secret' => '{app_secret}',
      'default_graph_version' => 'v2.2',
    ]);