2011-12-23 94 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. 在某種程度上,也許代碼取代瓦爾斯,嘗試記錄代碼的許多部分的信息,看看它是否被覆蓋在生活中過程