致命错误:Class' FacebookRequest'未找到

时间:2014-06-27 00:07:25

标签: php facebook

我确信我正在做的一切正确,我知道我的服务器设置和Facebook设置是正确的,因为当我使用zend与自动加载器时,这工作,但现在我不是,坦率地说,我不明白自定义自动加载机和手册不是超级明确,这可能是我的问题。我遇到的问题是当我声明new FacebookRequest php抛出错误说Fatal error: Class 'FacebookRequest' not found但是正在使用包含的文件。 sdk没有其他错误。

我的config.php

require_once('facebook/FacebookSession.php');
require_once('facebook/FacebookRedirectLoginHelper.php');
require_once('facebook/FacebookHttpable.php');
require_once('facebook/FacebookCurl.php');
require_once('facebook/FacebookCurlHttpClient.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');

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;

//start session if its not started already
if(session_id() == '') {
session_start();
}

// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication('APPID','SECRET');
$FBHelper = new FacebookRedirectLoginHelper('http://website.org/registration.php', $appId = $FBAppID, $appSecret = $FBAppSecret);

我的“website.org/registration.php”

//if were redirecting back from FB auth
try {
    $session = $FBHelper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
    echo $ex;
    die("<br><br>Facebook made an error");
} catch(\Exception $ex) {
    echo $ex;
    die("<br><br>It appears I messed up");
}

//check if were logged in or if we need to further our registration process
if (isset($session)) {
    //try to grab the user data to send to our database
    try {
        $user_profile = (new FacebookRequest(//heres the error
            $session, 'GET', '/me'
        ))->execute()->getGraphObject(GraphUser::className());          
    } catch(FacebookRequestException $e) {
        //if we're here then we failed getting the users data
        echo "Exception occured, code: " . $e->getCode();
        echo " with message: " . $e->getMessage();
    }   

2 个答案:

答案 0 :(得分:4)

它在Facebook命名空间中定义。

这意味着您必须在每个文件中添加

use Facebook\FacebookRequest;

让php了解这个课程。

或者您可以使用完全限定的名称:new use \Facebook\FacebookRequest(...)

答案 1 :(得分:2)

关于use语句的理解是它们只在定义它们的文件中工作。

来自documentation

  

导入规则是基于每个文件的,这意味着包含的文件不会继承父文件的导入规则。

这也是相反的方式;父级也不会继承子文件的导入规则。

您可以通过两种方式解决此问题:

  1. 在注册脚本中添加必要的use语句
  2. 请始终使用\Facebook\FacebookRequest的规范名称。