会话,PHP不完整类

会话,PHP不完整类,php,cakephp,Php,Cakephp,我使用的是CakePHP2.x。目前正在处理twitter OAuth 在函数_login()中,我无法读取会话,最终导致PhP类不完整。如果我执行$this->Session->write('twitter\u request\u token',序列化($requestToken))和$requestToken=$this->Session->read(unserialize('twitter\u request\u token');它可以工作,但我会在其他地方出错,这是由于使用序列化和uns

我使用的是CakePHP2.x。目前正在处理twitter OAuth

在函数_login()中,我无法读取会话,最终导致PhP类不完整。如果我执行
$this->Session->write('twitter\u request\u token',序列化($requestToken))
$requestToken=$this->Session->read(unserialize('twitter\u request\u token');
它可以工作,但我会在其他地方出错,这是由于使用序列化和unserialize Session造成的。

PHP不完整类”意味着PHP没有为您正在加载的对象定义的类

选项A:在将对象写入会话时,找出该对象是什么类,并确保在加载对象之前加载了类的定义


选项B:在写入对象之前将其转换为stdClass或数组,并在加载后转换回。这可能比第一个选项更复杂。

OAuth.php的OauthToken类非常简单,只有两个属性:key和secret。当您获得登录url时,可以将其作为数组存储到会话中:

CakeSession::write('Twitter.requestToken', array(
    'key' => $requestToken->key,
    'secret' => $requestToken->secret
));
然后,在调用OAuthClient->getAccessToken()时实例化您自己的OAuthToken,如下所示:

应准备就绪:

if ($accessToken) {
    $twitterClient->post($accessToken->key, $accessToken->secret, 
        'https://api.twitter.com/1/statuses/update.json', array('status' => 'My balls smells like A-1 sauce. #science'));
}

对不起,我还是新手。你能告诉我在哪里加载twitter的类定义吗?我遵循他的指南,没有看到类加载。我不使用CakePHP,所以我不知道具体细节,但你是否像上面所说的那样执行了
App::import
?你是否尝试过显式地包含OAuth lib文件?是的..我遵循了完整的指导原则。
$sessionRequestToken = CakeSession::read('Twitter.requestToken');
$accessToken = $twitterClient->getAccessToken('https://api.twitter.com/oauth/access_token', 
    new OAuthToken($sessionRequestToken['key'], $sessionRequestToken['secret']));
if ($accessToken) {
    $twitterClient->post($accessToken->key, $accessToken->secret, 
        'https://api.twitter.com/1/statuses/update.json', array('status' => 'My balls smells like A-1 sauce. #science'));
}