2010-09-09 63 views
0

我正在尝试在Twitter的servlet上运行OAuth实现。我无法将用户重定向到Twitter身份验证页面。当我得到回调时,它返回到一个servlet,但会话是不同的,因为请求来自Twitter而不是我的webapp。Servlets encodeRedirectURL

我试过使用encodeRedirectURL来获得会话以坚持到外部网站,但是这不起作用。需要帮忙!

回答

3

您必须将会话ID添加为回调URL的jsessionid片段。 Twitter必须回拨到http://example.com/callbackservlet;jsessionid=1E6FEC0D14D044541DD84D2D013D29ED(注意:jsessionid值在这里只是一个例子)。

当客户端已经支持cookie时,HttpServletResponse#encodeRedirectURL()(和encodeURL())不会对URL进行编码。你需要自己硬编码。

String url = "http://example.com/callbackservlet"; 
String encodedURL = url + ";jsessionid=" + request.getSession().getId(); 
+0

好答案!但我遇到了另一个问题。该回调返回到请求参数,但Tomcat从jsessionid截取所有内容到结束的URL,所以我失去了这些参数。 – Kirn 2010-09-09 14:43:29

+0

你确定这是Tomcat谁在做的吗?在你的web应用程序中没有一些'Filter',它像'response.sendRedirect(request.getRequestURI())'一样根据某些条件来做? – BalusC 2010-09-09 14:52:07