0

目前我正在尝试获取我登录用户的信息。但是我遇到了一个问题,我在 Yii 的一个函数中构建了它,这确实有效。但有时它不会。

当我转到该功能时,它会执行以下操作:

$accesToken = Yii::app()->facebook->getAccessToken();
$results = Yii::app()->facebook->api('/me');
print_r($results);

当我启动它时,我得到了所有信息,但是当我刷新同一页面时,它给出了以下错误:

Error 500
An active access token must be used to query information about the current user.

最奇怪的是,当我等待几秒钟并再次刷新时,它会给我用户的信息,就像第一次加载函数时一样。

所以我真的被困在如何解决这个问题上,因为我真的不知道为什么它一次有效,而不是第二次。

整个功能是:

public function actionLogin() {
    $facebookID = Yii::app()->facebook->getUser();

    if($facebookID == 0) {

            echo 'No Facebook id.';

    } else {
        $record = Users::model()->findByAttributes(array('FB_id'=>$facebookID));
        if($record===null) {

            echo 'Got facebookID but not in database!';
            echo $facebookID;
        } else {

            $accesToken = Yii::app()->facebook->getAccessToken();
            $results = Yii::app()->facebook->api('/me');
            print_r($results);
            echo '<br><br>';
            echo $accesToken;
            //echo 'Got facebookID and is in database!';
        }
    }
    /*
    echo $facebookID;
    echo '<br>';
    echo $accesToken;
    */
}
4

2 回答 2

0

这对我有用:访问令牌有效,但我们得到 OAuthException:活动访问令牌错误

public function __construct() {
    $this->facebook = new Facebook(array(
        'appId'  => $this->appId,
        'secret' => $this->appSecret,
    ));
    $this->facebook->setAccessToken(Yii::app()->session['access_token']);
}
于 2014-03-05T12:11:18.627 回答
0

尝试$results = Yii::app()->facebook->api('/me?access_token=' . $accesToken);

于 2013-01-17T18:30:29.717 回答