2012-08-27 104 views
0

我正在使用亚伯拉罕威廉的推特oAuth库。会话正在消失

以下是我的代码:

if (isset($_REQUEST['oauth_token'])){ 
    print_r($_SESSION); 
    exit; 
} 
/* Build TwitterOAuth object with client credentials. */ 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);  
/* Get temporary credentials. */ 
$request_token = $connection->getRequestToken(OAUTH_CALLBACK); 
/* Save temporary credentials to session. */ 
$_SESSION['oauth_token'] = $token = $request_token['oauth_token']; 
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; 
/* If last connection failed don't display authorization link. */ 
switch ($connection->http_code) { 
    case 200: 
    /* Build authorize URL and redirect user to Twitter. */ 
    $url = $connection->getAuthorizeURL($token); 
    print "<script>self.location='$url';</script>"; 
    break; 
    default: 
    /* Show notification if something went wrong. */ 
    echo 'Could not connect to Twitter. Refresh the page or try again later.'; 
    return; 
} 

如果我重定向前右侧检查了$ _SESSION,$ _SESSION是存在的。发生重定向时,设置$ _REQUEST ['oauth_token'](我对此进行了验证),但$ _SESSION不再存在。

我的浏览器已设置为接受Cookie和第三方Cookie。有任何想法吗?

+0

Wheres'session_start()'? –

+0

我打电话给我的库处理这个问题。在我的问题中,我提到在re-direct之前我正在测试$ _SESSION,并且直到那时代码设置的$ _SESSION和$ _SESSION变量都在那里。 – EastsideDeveloper

+0

为什么会有人降级我的问题?我使用特定的库标记清楚地将其标识为Twitter OAuth问题。 – EastsideDeveloper

回答

1

您没有session_start();在页面的顶部。在代码使用任何会话变量之前,session_start()是必需的。

+0

我打电话给的库处理。在我的问题中,我提到在re-direct之前我正在测试$ _SESSION,并且直到那时代码设置的$ _SESSION和$ _SESSION变量都在那里。 – EastsideDeveloper

+0

但是,当你试图访问会话变量后,它看起来像你正在调用库?如果库启动会话,则只有在包含它之后才能访问任何会话变量。 –

+0

此脚本是Twitter oAuth的回调URL。前面的代码在重定向时执行,这正好发生,但会话正在消失。请参阅这个问题的标签,以及前面的描述(我使用的是Abraham Williams oAuth库) – EastsideDeveloper