2012-08-27 83 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