第一次Twitter OAuth请求后会话丢失

时间:2011-03-10 17:16:10

标签: c# model-view-controller session twitter oauth

使用ASP.NET MVC,会话存储在SQL数据库中(从未遇到过问题,并且没有使用Web场)。也使用Twitterizer2库。使用Firefox。

  1. 首次请求,未打开任何浏览器实例。浏览器实例已启动。
  2. 我们有简单的表格“在Twitter上发布”并提交按钮分享。
  3. 点击分享后,我们会在会话中存储消息并重定向到Twitter的OAuth身份验证(在POST提交时)。
  4. 我们验证确定并返回我们的行动,在发布到Twitter之前,我们检查消息是否存储在会话中(并且它不是! - 它在Twitter重定向后立即丢失)
  5. 当我们尝试另一个消息时,分享它现在正在工作(会话)。
  6. 我们使用Cookie解决了这个问题但我们在从Twitter返回后丢失Session(第一次)时没有任何线索。
  7. 任何deas?

2 个答案:

答案 0 :(得分:0)

我想问一下你是如何在没有cookie的情况下第一次维持会话的?

我认为问题可能出在cookie设置过程中。我也在几周之前遇到过类似的问题。

问题在于,当我请求REQUEST令牌时,此请求是内部HTTP请求(不是通过用户浏览器)。作为对此请求的响应,我获得REQUEST令牌,然后在用户会话中设置它。

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

但是,如果用户在没有会话的情况下第一次来到我的网站,他就没有会话cookie来发送给我。在网站内部,我为他创建了一个会话,并将令牌存储在其中,但是然后不是向他发送包含cookie头的响应,以便他“接受”我的会话,我重定向到提供者授权端点。这样,用户就不会获得会话cookie,当他返回时,他就像是我网站的新用户。

这是发生在我身上的流程:

  
      
  1. 在数据库中创建用户会话
  2.   
  3. setcookie(usersession)//将标题添加到最终回复
  4.   
  5. 获取请求令牌
  6.   
  7. 在会话中设置令牌
  8.   
  9. 重定向用户(用户未收到会话cookie)
  10.   
  11. 用户转到授权点
  12.   
  13. 用户返回,但他是我的新用户
  14.   

我有兴趣知道你是否有类似的问题:) 最好的问候

答案 1 :(得分:0)

检查请求和回调域是否相同

即。您正在从localhost请求oauth并回调到127.0.0.1