2011-12-23 25 views
1

私はAbraham Williams twitter apiを使用してログインしています。ステップ1では、一時的な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に作成された新しいセッションレコードですか? DBセッションを使用すると仮定します。 – stef

+0

いいえDBセッションを使用していません –

答えて

0

あなたはSessionセクションで、あなたの設定ファイルを検証し、しかし:

  1. すでにあなたは、他のPCでそれを試してみましたか?
  2. 試したDBセッションまたはその逆?
  3. 大文字小文字を区別しない簡単なテストを作成しました(twitter oauthクラス)
  4. 何とかして、コードがヴァースを置き換えているかもしれません。コードの多くの部分の情報をログに記録してください。プロセス
関連する問題