3

私は CakePHP 2.x を使用しています。現在、Twitter の OAuth、http://code.42dh.com/oauth/について行っています。

function twitter_authentication()
{
            //assume above coding is all correct.   
    $this->Session->write('twitter_request_token', ($requestToken));
    $this->redirect('http://api.twitter.com/oauth/authenticate?force_login=true&oauth_token='.$requestToken->key); //I able to get $requestToken.
}

function twitter_login()
{
        $requestToken = $this->Session->read('twitter_request_token');
        $accessToken = $this->OAuthConsumer->getAccessToken('Twitter','https://api.twitter.com/oauth/access_token', $requestToken);

function_login() で、セッションの読み取りに失敗し、最終的に PhP Incomplete Class になりました。そうすればうまくいきます$this->Session->write('twitter_request_token', serialize($requestToken));$requestToken = $this->Session->read(unserialize('twitter_request_token');、セッションのシリアライズとアンシリアライズを使用したために他の場所でエラーが発生します。

4

2 に答える 2

2

「PHP Incomplete Class」は、ロードしているオブジェクトのクラス定義が PHP にないことを意味します。

オプション A: オブジェクトをセッションに書き込むときにそのオブジェクトがどのクラスであるかを把握し、オブジェクトをロードする前にクラスの定義がロードされていることを確認します。

stdClassオプション B:書き込む前にオブジェクトをor 配列に変換し、読み込み後に元に戻す。これは、最初のオプションよりも複雑になる場合があります。

于 2012-04-09T06:07:20.243 に答える
0

OAuth.php の OauthToken クラスは、key と secret の 2 つのプロパティだけを持つ非常に単純です。ログイン URL を取得したら、それを配列としてセッションに保存できます。

CakeSession::write('Twitter.requestToken', array(
    'key' => $requestToken->key,
    'secret' => $requestToken->secret
));

次に、次のように OAuthClient->getAccessToken() を呼び出すときに、独自の OAuthToken をインスタンス化します。

$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'));
}
于 2013-05-20T07:46:07.917 に答える