2011-12-23 86 views
1

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

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'); 
    } 

} 
+0

检查由其他地区的问题,因为在可能的情况下,我得到了会话值成功 – Dau

+1

你说“以前存储的会话数据丢失”,是一个新的会话记录在数据库中创建?假设你使用DB会话。 – stef

+0

不,我不使用数据库会话 –

回答

0

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

  1. 你已经尝试过其他PC?
  2. 试过数据库会话还是反向?
  3. 让你简单的测试不包括你的情况(微博oauth类)
  4. 在某种程度上,也许代码取代瓦尔斯,尝试记录代码的许多部分的信息,看看它是否被覆盖在生活中过程