簡體   English   中英

致命錯誤:找不到類“ FacebookRequest”

[英]Fatal error: Class 'FacebookRequest' not found

我確定我所做的一切都正確,而且我知道我的服務器設置和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();
    }   

它是在Facebook名稱空間中定義的。

這意味着您必須在每個文件中添加

use Facebook\FacebookRequest;

使php知道此類。

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

關於use語句,要了解的是它們僅在定義它們的文件內工作。

文檔中

導入規則是基於文件的,這意味着包含的文件將不會繼承父文件的導入規則。

反之亦然。 父級也不會繼承子級文件的導入規則。

您可以通過兩種方式解決此問題:

  1. 在注冊腳本中添加必要的use語句,
  2. 請始終使用\\Facebook\\FacebookRequest的規范名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM