1

Twitter でサインインする機能を自分の Web サイトに追加しようとしていますが、うまくいきません。私はtwitter4j APIを使用しています。twitter4j サイトには、サインイン ワークフローを正確に示すサンプル コードがあります。このコードを使用しようとしましたが、(少なくとも私にとっては) 特定のステップでは機能しません!

ユーザーがアプリケーションへのアクセスを許可する Twitter 検証ページにリダイレクトする LoginServlet があります。これは doGet コードです:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    TwitterFactory twitterFac = new TwitterFactory();
    Twitter twitter = twitterFac.getInstance();
    twitter.setOAuthConsumer("<consumer_key>", "<consumer_secret>");

    request.getSession().setAttribute("twitter", twitter);
    try {
        RequestToken requestToken = twitter.getOAuthRequestToken("http://127.0.0.1:8080/AllMusicWeb/CallbackServlet");
        request.getSession().setAttribute("requestToken", requestToken);
        response.sendRedirect(requestToken.getAuthenticationURL());
    } catch (TwitterException e) {
        throw new ServletException(e);
    }
}

ご覧のとおり、twitter オブジェクトとリクエスト トークンは http パケットに保存されます (少なくとも、getSession.setAttribute メソッドはそうしていると思います)。

次に、Twitter ページが私のアプリケーション (CallbackServlet) のページにリダイレクトされます。これはすべて正しく実行されます。

次に、CallbackServlet には次の doGet メソッドがあります。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Twitter twitter = (Twitter) request.getSession().getAttribute("twitter");
    RequestToken requestToken = (RequestToken) request.getSession().getAttribute("requestToken");
    String verifier = request.getParameter("oauth_verifier");
    try {
        twitter.getOAuthAccessToken(requestToken, verifier);
        request.getSession().removeAttribute("requestToken");
    } catch (TwitterException e) {
        throw new ServletException(e);
    }
    response.sendRedirect("<other_page>");
}

CallbackServlet は、(メソッド getSession().getAttribute() を使用して) LoginServlet に保存された twitter と requestToken を取得しようとします。問題はここにあります: twitter オブジェクトは常に null です!

コードサンプルとまったく同じように例に従っているので、うまくいくと思っていました。

どんな助けでもいただければ幸いです

前もって感謝します。

4

0 に答える 0