Twitter oAuth重定向到404,但仅限第一次

时间:2013-11-19 20:50:32

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

使用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。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

如果仍然找不到相同的页面错误,则可能删除了与身份验证参数关联的Twitter帐户!