2015-02-10 200 views
-1

我正在更新我的应用程序以使用新的PHP SDK,但我遇到此问题: 我想在单独的php文件中执行Facebook的内容以保持干净。 例如,这是我的fb.php页:为什么“使用”在包含在php中时不起作用?

<?php 
require_once('sdk/autoload.php'); 

use Facebook\HttpClients\FacebookHttpable; 
use Facebook\HttpClients\FacebookCurl; 
use Facebook\HttpClients\FacebookCurlHttpClient; 

use Facebook\Entities\AccessToken; 
use Facebook\Entities\SignedRequest; 

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

// start session 
session_start(); 

// init app with app id and secret 
FacebookSession::setDefaultApplication(...,...); 

// see if a existing session exists 
if (isset($_SESSION) && isset($_SESSION['fb_token'])) { 
    // create new session from saved access_token 
    $session = new FacebookSession($_SESSION['fb_token']); 

    // validate the access_token to make sure it's still valid 
    try { 
     if (!$session->validate()) { 
      $session = null; 
     } 
    } catch (Exception $e) { 
     // catch any exceptions 
     $session = null; 
    } 
} 

// see if we have a session 
if (isset($session)) { 

    // save the session 
    $_SESSION['fb_token'] = $session->getToken(); 
    // create a session using saved token or the new one we generated at login 
    $session = new FacebookSession($session->getToken()); 

//logged in 

} else { 

    //user is not logged in 
    ?> 
    <script>window.location="...link to login page...";</script> 
<?php 
    exit; 
} 

它使用Facebook的会话页面时,可能看起来像这样(testing.php):

<?php 
require_once('fb.php'); 

$request = new FacebookRequest($session, 'GET', '/me'); 
$response = $request->execute(); 
$graphObject = $response->getGraphObject()->asArray(); 

echo "Welcome, ".$graphObject['first_name']; 

这将返回该错误:

Fatal error: Class 'FacebookRequest' not found

的代码工作正常,当我在testing.php把use Facebook\FacebookRequest;,但我不想这样做,因为这是把所有的Facebook会话的东西,在一个单独的F点b.php文件...

这是什么原因,并有一个解决方案如何保持我的所有Facebook的东西在一个单独的文件?

谢谢!

+0

如果您将'$ request = new FacebookRequest($ session,'GET','/ me');'从您的testing.php移动到fb.php,会发生什么?你可以在testing.php中访问它吗? – 2015-02-10 15:52:13

回答

0

您在其中包含的文件fb.php处于不同范围,因此无法使用该导入。 你必须再次指定它们。

您可以阅读更多关于in PHP manual

+0

谢谢,正是我在找的东西。 – binoculars 2015-02-10 15:41:24

相关问题