Codeigniter теряет сессию после перенаправления - PullRequest
1 голос
/ 23 декабря 2011

Я использую твиттер-интерфейс Abraham Williams для входа в систему. На первом этапе я сохраняю временные 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 голосов
/ 13 января 2012

Конечно, вы подтвердили свой конфигурационный файл в разделе Session, но:

  1. Вы уже пробовали это на другом ПК?
  2. Пробные сеансы БД или обратные?
  3. Сделал вам простые тесты, исключая ваш случай (твиттер класс oauth)
  4. Если каким-то образом, возможно, код заменяет переменные, попробуйте записать информацию во многих частях кода, чтобы проверить, не перезаписана ли она в процессе работы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...