facebook api“语法错误,意外'使用'”

时间:2014-10-28 18:07:38

标签: php facebook-php-sdk

您好我正在尝试使用facebook api验证访问令牌并获取用户数据,如电子邮件等。

然而,当我测试它时,我得到了这个Parse error: syntax error, unexpected 'use' (T_USE)

这是我目前使用的代码。

        require_once( getcwd().'/Facebook/FacebookSession.php' );
        require_once( getcwd().'/Facebook/FacebookRedirectLoginHelper.php' );
        require_once( getcwd().'/Facebook/FacebookRequest.php' );
        require_once( getcwd().'/Facebook/FacebookResponse.php' );
        require_once( getcwd().'/Facebook/FacebookSDKException.php' );
        require_once( getcwd().'/Facebook/FacebookRequestException.php' );
        require_once( getcwd().'/Facebook/FacebookAuthorizationException.php' );
        require_once( getcwd().'/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;
        use Facebook\GraphUser;


        FacebookSession::setDefaultApplication('My App ID', 'My Secret');

        //   Use one of the helper classes to get a FacebookSession object.
        //   FacebookRedirectLoginHelper
        //   FacebookCanvasLoginHelper
        //   FacebookJavaScriptLoginHelper
        // or create a FacebookSession with a valid access token:
        $session = new FacebookSession('My Access Token');

        try {
            $me = (new FacebookRequest(
                $session, 'GET', '/me'
            ))->execute()->getGraphObject(GraphUser::className());
            echo $me->getName();
        } catch (FacebookRequestException $e) {
            // The Graph API returned an error
        } catch (\Exception $e) {
            // Some other error occurred
        }

有关如何解决此错误的任何想法?我从来没有使用过“使用”,我已经阅读了它的php文档,但我仍然无法弄明白。

3 个答案:

答案 0 :(得分:4)

非常感谢大家终于让它工作了,结果证明你必须确保下面的代码不像ceejayoz所说的那样。我刚把它移到我的代码点火器模型类之外,现在它可以工作了,谢谢。

//We need to load the Facebook api library
require_once( getcwd().'/facebook-php-sdk-v4-4.0-dev/autoload.php' );
require_once( getcwd().'/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookSession.php' );
require_once( getcwd().'/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookRedirectLoginHelper.php' );
require_once( getcwd().'/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookRequest.php' );
require_once( getcwd().'/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookResponse.php' );
require_once( getcwd().'/Facebook/FacebookSDKException.php' );
require_once( getcwd().'/Facebook/FacebookRequestException.php' );
require_once( getcwd().'/Facebook/FacebookAuthorizationException.php' );
require_once( getcwd().'/Facebook/GraphObject.php' );

//Setup the facebook api for Facebook Validate
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\GraphUser;

答案 1 :(得分:2)

这些行无效

use Facebook\FacebookSession';
use Facebook\FacebookRedirectLoginHelper';

正确的是:

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;

答案 2 :(得分:0)

解决方案很简单。将use语句放在{ }之外。

例如,以下内容不正确:

<?php
if($_GET["page"]=="index.php"){
        use Facebook\FacebookSession;
}
?>

以下是正确的:

<?php
use Facebook\FacebookSession;
if($_GET["page"]=="index.php"){
   ...
}
?>