C# 第一个Twitter OAuth请求后会话丢失

C# 第一个Twitter OAuth请求后会话丢失,c#,model-view-controller,session,twitter,oauth,C#,Model View Controller,Session,Twitter,Oauth,使用ASP.NET MVC,会话存储在SQL数据库中(从来没有遇到过问题,也没有使用web场)。还可以使用Twitterizer2库。使用Firefox 第一次请求时,未打开任何浏览器实例。浏览器实例已启动 我们有简单的表单“在twitter上发布”和提交按钮共享 单击共享时,我们将消息存储在会话中,并重定向到Twitter的OAuth身份验证(在提交后) 我们验证OK并返回到我们的操作,在发布到Twitter之前,我们检查消息是否存储在会话中(并且它不是!-在Twitter重定向后它立即丢失)

使用ASP.NET MVC,会话存储在SQL数据库中(从来没有遇到过问题,也没有使用web场)。还可以使用Twitterizer2库。使用Firefox

  • 第一次请求时,未打开任何浏览器实例。浏览器实例已启动
  • 我们有简单的表单“在twitter上发布”和提交按钮共享
  • 单击共享时,我们将消息存储在会话中,并重定向到Twitter的OAuth身份验证(在提交后)
  • 我们验证OK并返回到我们的操作,在发布到Twitter之前,我们检查消息是否存储在会话中(并且它不是!-在Twitter重定向后它立即丢失)
  • 当我们尝试另一个Message共享时,它现在正在工作(会话)
  • 我们用Cookie解决了这个问题,但在从Twitter返回后(第一次)失去会话时,我们没有任何线索

  • 有没有DEA?

    我想问一下,第一次没有cookie,你是如何维持会议的

    我认为问题可能在于cookie设置过程。在几周前我也经历过类似的问题

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

    $token = getRequestToken();
    $_SESSION['token'] = $token;
    
    但是,如果用户第一次访问我的站点时没有会话,他就没有会话cookie发送给我。在网站内部,我为他创建了一个会话,并将令牌存储在其中,但是,我没有向他发送包含cookie头的响应,以便他“接受”我的会话,而是重定向到提供者授权端点。这样,用户就不会得到会话cookie,当他返回时,他就像我的站点的新用户一样

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

  • 在数据库中创建用户会话
  • setcookie(usersession)//向最终响应添加头
  • 获取请求令牌
  • 在会话中设置令牌
  • 重定向用户(用户未收到会话cookie)
  • 用户转到授权点
  • 用户返回,但他是我的新用户
  • 我很想知道您是否有类似的问题:)
    最诚挚的问候

    我想问一下,您第一次没有cookie时是如何维持会话的

    我认为问题可能在于cookie设置过程。在几周前我也经历过类似的问题

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

    $token = getRequestToken();
    $_SESSION['token'] = $token;
    
    但是,如果用户第一次访问我的站点时没有会话,他就没有会话cookie发送给我。在网站内部,我为他创建了一个会话,并将令牌存储在其中,但是,我没有向他发送包含cookie头的响应,以便他“接受”我的会话,而是重定向到提供者授权端点。这样,用户就不会得到会话cookie,当他返回时,他就像我的站点的新用户一样

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

  • 在数据库中创建用户会话
  • setcookie(usersession)//向最终响应添加头
  • 获取请求令牌
  • 在会话中设置令牌
  • 重定向用户(用户未收到会话cookie)
  • 用户转到授权点
  • 用户返回,但他是我的新用户
  • 我很想知道您是否有类似的问题:)
    问候您

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


    i、 e.您正在从localhost请求oauth并回调到127.0.0.1

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


    i、 e.您正在从localhost请求oauth并回调到127.0.0.1

    您可以使用FireBug步骤4查看吗。当从Twitter返回时,请求头中是否发送了
    AspNet\u SessionId
    cookie?您可以使用FireBug步骤4进行查看。从Twitter返回时,
    AspNet\u SessionId
    cookie是否在请求头中发送?