2011-03-10 70 views
2

使用ASP.NET MVC,會話存儲在SQL數據庫中(從未遇到過問題,也沒有使用網絡農場)。也使用Twitterizer2庫。使用Firefox。第一次Twitter OAuth請求後會話丟失

  1. 第一次請求,沒有瀏覽器實例打開。瀏覽器實例已啓動。
  2. 我們有簡單的表單「在twitter上發佈」並提交按鈕分享。
  3. 當單擊共享時,我們將消息存儲在會話中並重定向到Twitter的OAuth身份驗證(在POST提交時)。
  4. 我們驗證確定,並返回到我們的行動,併發布到Twitter之前,我們檢查,如果消息存儲在會話(這是不 - !這是Twitter的重定向後丟失)
  5. 當我們嘗試另一個訊息話題分享正在工作(Session)。
  6. 我們使用Cookie解決了它,但我們沒有線索,但我們從Twitter返回後丟失了Session(第一次)。

任何deas?

+0

你可以用FireBug第4步看看嗎?從Twitter返回時是在請求頭中發送的'AspNet_SessionId' cookie? – 2011-03-10 17:26:22

回答

0

我想問問你第一次在沒有cookie的情況下如何保持會話?

我認爲這個問題可以是cookie集合的過程。幾周前我也遇到過類似的問題。

問題是,當我請求REQUEST令牌時,此請求是內部HTTP請求(不是通過用戶瀏覽器)。作爲對此請求的響應,我獲得了REQUEST令牌,然後將其設置在用戶會話中。

$token = getRequestToken(); 
$_SESSION['token'] = $token; 

但是,如果用戶剛到我的網站第一次沒有會話,他沒有會話cookie發送給我。在網站的內部,我爲他創建了一個會話,並將令牌存儲在其中,但不是向他發送包含cookie頭的響應,以便他「接受」我的會話,而是重定向到提供者授權端點。這樣,用戶不會獲得會話cookie,當他返回時,他就像我的網站的新用戶。

這是發生在我身上的處理流程:

  1. 數據庫
  2. 的setcookie(usersession)創建用戶會話//添加頁眉到最終響應
  3. GET請求令牌
  4. 在會話中設置令牌
  5. 重定向用戶(用戶不會收到會話cookie)
  6. 用戶進入授權點
  7. 用戶的回報,但他是一個新的用戶,我

我很想知道,如果你有類似的問題:) 問候

0

檢查請求和回調域是否相同

即你正在從本地主機請求oauth並回調到127.0.0.1