在OAuth重定向

时间:2015-05-27 18:49:17

标签: php session yii oauth

我已经失去了一天半,现在试图找出为什么Yii在我转到Twitter的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);
    }
 }

我也在配置文件中将会话自动启动设置为true。

关于它为什么不起作用的想法/我读过的东西:

  • Twitter的网站是HTTPS,我在localhost(不是HTTPS)。出于某种原因,我忘了这会使会话在重定向时丢失数据。如果是这种情况,如何在不使用HTTPS的情况下修复它?
  • 当我创建新的CHttpCookies时,他们也没有保存,我无法检索值
  • 我尝试过使用Yii :: app() - > user-> setState,但这也无效。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。它没有用,因为我使用127.0.0.1进行重定向,而不是标准的localhost。我改变了,现在一切正常。