package com.sl; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sl.dao.TwitterDAO; import com.sl.db.DBException; import com.sl.pojo.UserPojo; import java.io.IOException; @WebServlet("/callback") public class CallbackServlet extends HttpServlet { private static final long serialVersionUID = 1657390011452788111L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get twitter object from session Twitter twitter = (Twitter) request.getSession().getAttribute("twitter"); //Get twitter request token object from session RequestToken requestToken = (RequestToken) request.getSession().getAttribute("requestToken"); String verifier = request.getParameter("oauth_verifier"); try { // Get twitter access token object by verifying request token AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier); request.getSession().removeAttribute("requestToken"); // Get user object from database with twitter user id UserPojo user = TwitterDAO.selectTwitterUser(accessToken.getUserId()); if(user == null) { // if user is null, create new user with given twitter details user = new UserPojo(); user.setTwitter_user_id(accessToken.getUserId()); user.setTwitter_screen_name(accessToken.getScreenName()); user.setAccess_token(accessToken.getToken()); user.setAccess_token_secret(accessToken.getTokenSecret()); TwitterDAO.insertRow(user); user = TwitterDAO.selectTwitterUser(accessToken.getUserId()); } else { // if user already there in database, update access token user.setAccess_token(accessToken.getToken()); user.setAccess_token_secret(accessToken.getTokenSecret()); TwitterDAO.updateAccessToken(user); } request.setAttribute("user", user); } catch (TwitterException | DBException e) { throw new ServletException(e); } request.getRequestDispatcher("/index2.html").forward(request, response); } }