@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()); } }