错误:使用facebook PHP SDK找不到类'Facebook\FacebookSession'

Pau*_*nel 10 php facebook facebook-graph-api facebook-php-sdk

我在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
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码:

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
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

Fatal error: Class 'Facebook\FacebookSession' not found in /homepages/2/d184071366/htdocs/isgeek/fb/FaRepost/test.php on line 9
Run Code Online (Sandbox Code Playgroud)

在更新我的PHP版本时,所以问题不在这里.好像找不到PHP文件.我读了这个问题(Facebook SDK v4 for PHP Minimal Example)但它没有帮助.

这个纪念来自哪里?

raj*_*ade 20

  1. 需要PHP 5.4.0或更高版本.
  2. Facebook使用PSR-4的实现.因此,您不必使用require或require_once或include或include_once.
  3. 在PSR-4中,您只需要packagename(名称空间)即目录名和类文件名.它将从给定的包名称动态注册类.Ex.: - use packaname\classname.
  4. 您将在Facebook SDK Autoload根目录中找到autoload.php文件.
  5. use 用于加载动态类 spl_autoload_register
  6. Facebook使用autoload.php或注册所有库autoload_fb.php
  7. 您必须在下载的库中找到autoload.php facebook-php-sdk-v4-4.0-dev/.
  8. 如果您只想从下载源使用Facebook库,那么您必须在根目录或Facebook目录中复制autoload.php.
  9. 定义常量,FACEBOOK_SDK_V4_SRC_DIR即facebook库的路径
  10. 您需要按照以下方式在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');
Run Code Online (Sandbox Code Playgroud)


Pau*_*nel 14

我在这里找到了解决方案

我一段时间没有在PHP中编码,事情发生了变化.use Facebook\FacebookSession;是不足够的.你也需要添加一个require_once.

require_once( 'Facebook/FacebookSession.php' );
Run Code Online (Sandbox Code Playgroud)

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