2015-05-27 3 views
0

Я потерял полтора дня, пытаясь понять, почему Yii удаляет все данные сеанса после того, как я перейду на страницу OAuth Twitter и вернусь к моему перенаправлению.Yii проигрывает сеанс после перенаправления OAuth

Вот главный SiteController, куда я иду в Twitter. Здесь я пытаюсь сохранить значения oauth_token и token_secret, поэтому я могу использовать их в контроллере перенаправления.

function actionTwitter() 
{ 
    $consumerKey = ""; 
    $consumerSecret = ""; 

    $connection = new TwitterOAuth($consumerKey, $consumerSecret); 

    $request_token = $connection->oauth("oauth/request_token", array("oauth_callback" => "http://127.0.0.1/yii/?r=redirect&type=twitter")); 

    $oauth_token=$request_token['oauth_token']; 
    $token_secret=$request_token['oauth_token_secret']; 

    Yii::app()->session['token'] = $oauth_token; // This doesn't save!! 
    Yii::app()->session['token_secret'] = $token_secret; // This does not save!! 

    $url = $connection->url("oauth/authorize", array("oauth_token" => $oauth_token)); 

    $this->redirect($url); 

    exit(); // some people have said I need to exit the session first after I redirect, but it doesn't help at all. 
} 

Вот мой RedirectController, который представляет собой отдельный контроллер, а не в главном SiteController:

public function actionIndex() 
{ 
    $type = $_GET['type']; 

    if ($type == "twitter") 
    { 
     $token = Yii::app()->session['token']; 
     print($token); 
    } 
} 

У меня также есть набор сессии Автозапуск правда в моем файле конфигурации.

Мысли о том, почему он не работает/материал, который я прочитал о:

  • сайт Twitter является HTTPS, и я на локальном хосте (не HTTPS есть). По какой-то причине я забыл, что это приведет к потере данных при перенаправлении. Если это так, как я могу исправить это, не используя HTTPS?
  • Когда я создаю новые CHttpCookies, они тоже не сохраняются, я не могу получить значение
  • Я попытался использовать Yii :: app() -> user-> setState, который тоже не работает.

ответ

0

Я нашел решение. Это не сработало, потому что я использовал 127.0.0.1 для перенаправления вместо стандартного localhost. Я изменил это, и все работает сейчас.

Смежные вопросы