【问题标题】:Twitter oAuth redirects to 404, but only the first timeTwitter oAuth 重定向到 404,但只是第一次
【发布时间】:2014-02-10 17:29:57
【问题描述】:

使用 twitter4j v3.0.3,Twitter 集成的各个方面都可以工作,除了在验证/授权我时,浏览器会重定向到 http://api.twitter.com/login,它会返回“抱歉,该页面不存在!”

这只发生在第一次,即具有清除缓存或隐身窗口的浏览器。我的服务器报告它正在重定向到这个 URL...

http://api.twitter.com/oauth/authenticate?oauth_token=PTlVt6aisFy7UytjsRM5poFHcdGEjGtgNpxhJ8UbQ

...浏览器确认 302 到...

https://api.twitter.com/oauth/authenticate;jsessionid=pw65se84inj9?oauth_token=PTlVt6aisFy7UytjsRM5poFHcdGEjGtgNpxhJ8UbQ

...并且该请求会为不存在的页面生成 302,即

https://api.twitter.com/login?redirect_after_login=%2Foauth%2Fauthenticate%3Bjsessionid%3Dpw65se84inj9%3Foauth_token%3DPTlVt6aisFy7UytjsRM5poFHcdGEjGtgNpxhJ8UbQ

当用户从“抱歉,该页面不存在!”返回时页面然后重试,oauth 流程完美运行。

我猜这与附加的 jsessionid 有关?

此问题在本地开发服务器上,但在 GAE 生产中也间歇性地看到 404。

【问题讨论】:

    标签: google-app-engine twitter-oauth twitter4j


    【解决方案1】:

    我在这里找到了解决方案:https://stackoverflow.com/a/19690688/2698327

    您正确识别了问题:GAE 为用户发出的第一个请求(即创建会话时)附加了一个 jsessionid 参数。

    为了防止它这样做,您可以编辑 web.xml 并附加以下内容:

    <context-param>
        <param-name>org.mortbay.jetty.servlet.SessionURL</param-name>
        <param-value>none</param-value>
    </context-param>
    

    【讨论】:

      【解决方案2】:

      要正确验证,您应该通过链接中的查询参数发送适当的参数,例如:消费者密钥、消费者密钥、访问令牌和访问令牌秘密。

      如果仍然出现相同页面未找到错误,则可能与身份验证参数关联的推特帐户已被删除!

      【讨论】:

      • 正如我上面提到的,Twitter 集成的各个方面都有效。重试时,即使 oAuth 也会流动。这意味着所有参数都在 Twitter4J 中正确设置,不是吗?鉴于 oAuth 流程在重试时有效,因此关联的 twitter 帐户显然没有被删除。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多