コード例 #1
0
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    String action = req.getParameter(Pages.PARAM_ACTION);

    if (action == null) {
      resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
      return;
    }

    Twitter twitter = new Twitter();
    twitter.setOAuthConsumer(
        ApplicationProperty.read(ApplicationProperty.CONSUMER_KEY),
        ApplicationProperty.read(ApplicationProperty.CONSUMER_SECRET));
    log.warning(
        "action="
            + action
            + ", Using consumer key "
            + ApplicationProperty.read(ApplicationProperty.CONSUMER_KEY)
            + ", isTesting()="
            + ApplicationProperty.isTesting());
    try {
      User user = AuthFilter.getCurrentUser(req).getOpenId();

      if (ApplicationProperty.isTesting() && action.equalsIgnoreCase(Pages.PARAM_ACTION_ADD)) {
        saveToken("token", "tokenSecret", "papaya_" + (new Date().getTime()), user);
        resp.sendRedirect(Pages.PAGE_MAIN);
      } else if (action.equalsIgnoreCase(Pages.PARAM_ACTION_ADD)) {
        RequestToken requestToken = twitter.getOAuthRequestToken();
        log.warning(
            "requestToken="
                + requestToken
                + ", token="
                + requestToken.getToken()
                + ", secret="
                + requestToken.getTokenSecret()
                + ", url="
                + requestToken.getAuthorizationURL());
        resp.addCookie(new Cookie(COOKIE_TOKEN, requestToken.getToken()));
        resp.addCookie(new Cookie(COOKIE_TOKEN_SECRET, requestToken.getTokenSecret()));
        resp.sendRedirect(requestToken.getAuthorizationURL());
      } else if (action.equalsIgnoreCase(Pages.PARAM_OAUTH)) {
        String token = null, tokenSecret = null;
        Cookie[] cookies = req.getCookies();
        log.warning("back from twitter, req=" + req.getQueryString());
        for (Cookie cookie : cookies) {
          if (cookie.getName().equals(COOKIE_TOKEN)) {
            token = cookie.getValue();
          }
          if (cookie.getName().equals(COOKIE_TOKEN_SECRET)) {
            tokenSecret = cookie.getValue();
          }
        }
        AccessToken accessToken = twitter.getOAuthAccessToken(token, tokenSecret);
        if (accessToken == null) {
          log.warning(
              "twitter token cann't be retrieved for token=" + token + ", secret=" + tokenSecret);
        }

        this.saveToken(accessToken, user);
        resp.sendRedirect(Pages.PAGE_MAIN);
      } else if (action.equalsIgnoreCase(Pages.PARAM_ACTION_DELETE)) {
        this.deleteToken(req.getParameter(Pages.PARAM_SCREENNAME), user);
        resp.getWriter().write("Delete Successful");
      } else {
        resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
      }
    } catch (TwitterException e) {
      e.printStackTrace(resp.getWriter());
    } catch (Exception e) {
      e.printStackTrace(resp.getWriter());
    }
  }