Codeigniter在重定向后丢失会话

时间:2011-12-23 13:18:09

标签: php api codeigniter session twitter

我正在使用Abraham Williams twitter api登录用户。在第一步中,我将临时oauth_token和oauth_token _secret存储在会话中。在登录过程之后将用户重定向到我的页面之后,先前存储的会话数据将丢失。我该如何解决这个问题?

function oauth()
{
    //Build TwitterOAuth object with client credentials
    $connection = new TwitterOAuth($this->consumer_key, $this->consumer_secret);

    //Get temporary credentials
    $request_token = $connection->getRequestToken($this->callback);

    //Save temporary credentials to session

    $session_data = array(
        'oauth_token'       => $request_token['oauth_token'],
        'oauth_token_secret'=> $request_token['oauth_token_secret'],
    );

    $this->session->set_userdata($session_data);


    //If last connection failed don't display authorization link.
    switch ($connection->http_code)
    {
        case 200:
            $url = $connection->getAuthorizeURL($request_token['oauth_token'], TRUE);
            header('Location: ' . $url);
            break;

        default:
            echo 'Could not connect to Twitter. Refresh the page or try again later.';
    }

}

function callback()//callback after user signs in with twitter
{

    $connection = new TwitterOAuth($this->consumer_key, 
                                   $this->consumer_secret,
                                   $this->session->userdata("oauth_token"),
                                   $this->session->userdata("oauth_token_secret"));

    $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);

    $this->session->set_userdata('access_token', $access_token);

    //Remove no longer needed request tokens
    $this->session->unset_userdata('oauth_token');
    $this->session->unset_userdata('oauth_token_secret');

    //If HTTP response is 200 continue otherwise send to connect page to retry
    if (200 == $connection->http_code)
    {
        $this->session->set_userdata('twitter_log_in', TRUE);
        redirect('/main/', 'refresh');
    }

}

1 个答案:

答案 0 :(得分:0)

当然,您在会话部分验证了配置文件,但是:

  1. 您是否已经在其他PC上试过了?
  2. 尝试过DB会话还是反向?
  3. 为您排除简单的测试(twitter oauth class)
  4. 在某种程度上,也许代码正在替换变量,尝试在代码的许多部分中记录信息,以查看它是否在过程的生命中被覆盖了
相关问题