Class AbstractAuthorizationCodeCallbackServlet
- java.lang.Object
-
- javax.servlet.GenericServlet
-
- javax.servlet.http.HttpServlet
-
- com.google.api.client.extensions.servlet.auth.oauth2.AbstractAuthorizationCodeCallbackServlet
-
- All Implemented Interfaces:
java.io.Serializable,javax.servlet.Servlet,javax.servlet.ServletConfig
public abstract class AbstractAuthorizationCodeCallbackServlet extends javax.servlet.http.HttpServletThread-safe OAuth 2.0 authorization code callback servlet to process the authorization code or error response from authorization page redirect.This is designed to simplify the flow in which an end-user authorizes your web application to access their protected data. The main servlet class extends
AbstractAuthorizationCodeServletwhich if the end-user credentials are not found, will redirect the end-user to an authorization page. If the end-user grants authorization, they will be redirected to this servlet that extendsAbstractAuthorizationCodeCallbackServletand theonSuccess(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, com.google.api.client.auth.oauth2.Credential)will be called. Similarly, if the end-user grants authorization, they will be redirected to this servlet andonError(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, com.google.api.client.auth.oauth2.AuthorizationCodeResponseUrl)will be called.Sample usage:
public class ServletCallbackSample extends AbstractAuthorizationCodeCallbackServlet { @Override protected void onSuccess(HttpServletRequest req, HttpServletResponse resp, Credential credential) throws ServletException, IOException { resp.sendRedirect("/"); } @Override protected void onError( HttpServletRequest req, HttpServletResponse resp, AuthorizationCodeResponseUrl errorResponse) throws ServletException, IOException { // handle error } @Override protected String getRedirectUri(HttpServletRequest req) throws ServletException, IOException { GenericUrl url = new GenericUrl(req.getRequestURL().toString()); url.setRawPath("/oauth2callback"); return url.build(); } @Override protected AuthorizationCodeFlow initializeFlow() throws IOException { return new AuthorizationCodeFlow.Builder(BearerToken.authorizationHeaderAccessMethod(), new NetHttpTransport(), new JacksonFactory(), new GenericUrl("https://server.example.com/token"), new BasicAuthentication("s6BhdRkqt3", "7Fjfp0ZBr1KtDRbnfVdmIw"), "s6BhdRkqt3", "https://server.example.com/authorize").setCredentialStore( new JdoCredentialStore(JDOHelper.getPersistenceManagerFactory("transactions-optional"))) .build(); } @Override protected String getUserId(HttpServletRequest req) throws ServletException, IOException { // return user ID } }- Since:
- 1.7
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private AuthorizationCodeFlowflowAuthorization code flow to be used across all HTTP servlet requests ornullbefore initialized ininitializeFlow().private java.util.concurrent.locks.LocklockLock on the flow.private static longserialVersionUID
-
Constructor Summary
Constructors Constructor Description AbstractAuthorizationCodeCallbackServlet()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voiddoGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)protected abstract java.lang.StringgetRedirectUri(javax.servlet.http.HttpServletRequest req)Returns the redirect URI for the given HTTP servlet request.protected abstract java.lang.StringgetUserId(javax.servlet.http.HttpServletRequest req)Returns the user ID for the given HTTP servlet request.protected abstract AuthorizationCodeFlowinitializeFlow()Loads the authorization code flow to be used across all HTTP servlet requests (only called during the first HTTP servlet request with an authorization code).protected voidonError(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp, AuthorizationCodeResponseUrl errorResponse)Handles an error to the authorization, such as when an end user denies authorization.protected voidonSuccess(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp, Credential credential)Handles a successfully granted authorization.-
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
lock
private final java.util.concurrent.locks.Lock lock
Lock on the flow.
-
flow
private AuthorizationCodeFlow flow
Authorization code flow to be used across all HTTP servlet requests ornullbefore initialized ininitializeFlow().
-
-
Method Detail
-
doGet
protected final void doGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException- Overrides:
doGetin classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionjava.io.IOException
-
initializeFlow
protected abstract AuthorizationCodeFlow initializeFlow() throws javax.servlet.ServletException, java.io.IOException
Loads the authorization code flow to be used across all HTTP servlet requests (only called during the first HTTP servlet request with an authorization code).- Throws:
javax.servlet.ServletExceptionjava.io.IOException
-
getRedirectUri
protected abstract java.lang.String getRedirectUri(javax.servlet.http.HttpServletRequest req) throws javax.servlet.ServletException, java.io.IOExceptionReturns the redirect URI for the given HTTP servlet request.- Throws:
javax.servlet.ServletExceptionjava.io.IOException
-
getUserId
protected abstract java.lang.String getUserId(javax.servlet.http.HttpServletRequest req) throws javax.servlet.ServletException, java.io.IOExceptionReturns the user ID for the given HTTP servlet request.- Throws:
javax.servlet.ServletExceptionjava.io.IOException
-
onSuccess
protected void onSuccess(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp, Credential credential) throws javax.servlet.ServletException, java.io.IOExceptionHandles a successfully granted authorization.Default implementation is to do nothing, but subclasses should override and implement. Sample implementation:
resp.sendRedirect("/granted");- Parameters:
req- HTTP servlet requestresp- HTTP servlet responsecredential- credential- Throws:
javax.servlet.ServletException- HTTP servlet exceptionjava.io.IOException- some I/O exception
-
onError
protected void onError(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp, AuthorizationCodeResponseUrl errorResponse) throws javax.servlet.ServletException, java.io.IOExceptionHandles an error to the authorization, such as when an end user denies authorization.Default implementation is to do nothing, but subclasses should override and implement. Sample implementation:
resp.sendRedirect("/denied");- Parameters:
req- HTTP servlet requestresp- HTTP servlet responseerrorResponse- error response (AuthorizationCodeResponseUrl.getError()is notnull)- Throws:
javax.servlet.ServletException- HTTP servlet exceptionjava.io.IOException- some I/O exception
-
-