0
votes

I've lost a day and a half now trying to figure out why Yii is deleting all of the session data after I go to Twitter's OAuth page and back to my redirect.

Here is the main SiteController, where I go to Twitter. Here I am trying to save the oauth_token and token_secret values, so I can use them on the redirect controller.

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.
}

Here is my RedirectController, which is a separate controller and not in the main SiteController:

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

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

I also have the session autostart set to true in my config file.

Thoughts on why it isn't working / stuff I have read about:

  • Twitter's site is HTTPS, and I am on localhost (which isn't HTTPS). For some reason that I forget this will make the session lose data when I redirect. If this is the case, how do I fix it without using HTTPS?
  • When I create new CHttpCookies they do not save either, I can't retrieve the value
  • I have tried Yii::app()->user->setState instead, which isn't working either.
1

1 Answers

0
votes

I found the solution. It did not work because I was using 127.0.0.1 for the redirect, instead of the standard localhost. I changed that and all is working now.