package jtweet.web; import java.io.IOException; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import jtweet.oauth.Configuration; import oauth.signpost.OAuthConsumer; import oauth.signpost.OAuthProvider; import oauth.signpost.basic.DefaultOAuthConsumer; import oauth.signpost.basic.DefaultOAuthProvider; public class OAuthServlet extends JTweetServlet { private static final long serialVersionUID = 6214726194703668213L; static final Logger logger = Logger.getLogger(OAuthServlet.class.getName()); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String oauth_verifier = req.getParameter("oauth_verifier"); OAuthConsumer consumer = new DefaultOAuthConsumer(Configuration.getConsumerKey(), Configuration.getConsumerSecret()); OAuthProvider provider = new DefaultOAuthProvider("https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token", "https://twitter.com/oauth/authorize"); Cookie[] cookies = req.getCookies(); Cookie accountCookie = null; String[] accountString = null; for (Cookie cookie : cookies) { if (cookie.getName().equals(JTweetServlet.ACCOUNT_COOKIE_NAME)) { accountCookie = cookie; break; } } if (accountCookie != null) { accountString = Encrypt.decodeAccount(accountCookie.getValue()); } if (accountString != null) { String username = accountString[0]; String token = accountString[2]; String tokenSecret = accountString[3]; consumer.setTokenWithSecret(token, tokenSecret); provider.setOAuth10a(true); try { provider.retrieveAccessToken(consumer, oauth_verifier); String accessToken = consumer.getToken(); String accessTokenSecret = consumer.getTokenSecret(); accountCookie.setValue(Encrypt.encodeAccount(new String[] { username, "", accessToken, accessTokenSecret })); accountCookie.setMaxAge(7 * 24 * 3600); accountCookie.setPath("/"); resp.addCookie(accountCookie); HttpSession session = req.getSession(true); session.setAttribute("username", username); session.setAttribute("accessToken", accessToken); session.setAttribute("accessTokenSecret", accessTokenSecret); resp.sendRedirect("/home"); } catch (Exception e) { e.printStackTrace(); } } } }