0


0

サーブレットencodeRedirectURL

Twitter用のサーブレットでOAuth実装を実行しようとしています。 ユーザーをTwitter認証ページにリダイレクトするのに問題があります。 コールバックを取得すると、サーブレットに返されますが、リクエストはウェブアプリではなくTwitterから送信されるため、セッションは異なります。

encodeRedirectURLを使用してセッションを外部サイトに永続化することを試みましたが、それは機能しません。 助けが必要!

1 Answer


3


セッションIDをコールバックURLの「jsessionid」フラグメントとして追加する必要があります。 Twitterはhttp://example.com/callbackservlet;jsessionid=1E6FEC0D14D044541DD84D2D013D29EDにコールバックする必要があります(注:jsessionidの値はここでの例です)。

http://download.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html#encodeRedirectURL%28java.lang.String%29 [HttpServletResponse#encodeRedirectURL()](および `encodeURL( ) `)は、クライアントが既にCookieをサポートしている場合、URLをエンコードしません。 あなた自身でそれをハードエンコードする必要があります。

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