List of usage examples for com.google.api.client.googleapis.auth.oauth2 GoogleTokenResponse parseIdToken
@Beta public GoogleIdToken parseIdToken() throws IOException
From source file:com.example.contactmgr.server.auth.GPlus.java
License:Open Source License
/** * Upgrade given auth code to token, and store it in the session. * POST body of request should be the authorization code. * Example URI: /login?code=/* w w w.jav a 2 s .c o m*/ */ @GET @Path("login") public Response login(@QueryParam("code") String code, @Context HttpServletRequest req, @Context HttpServletResponse res) throws IOException { // already logged in if (AuthFilter.getUser() != null) { try { return Response.temporaryRedirect(new URI(getAppUrl(req))).build(); } catch (URISyntaxException e) { throw new RestException(e); } } try { // Upgrade the authorization code into an access and refresh token. String callbackUri = getCallbackURI(req); GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, code, callbackUri).execute(); // You can read the Google user ID in the ID token. // This sample does not use the user ID. GoogleIdToken idToken = tokenResponse.parseIdToken(); String email = idToken.getPayload().getEmail(); User user = appUserSvc.getRegisteredUser(email); if ((user == null) || user.getGoogleId() == null) { // Register new user User newUser = getUserInfo(tokenResponse); try { user = registerUser(newUser); } catch (DuplicateUserException e) { res.sendRedirect("/s/ar.html"); } } AuthFilter.login(user, tokenResponse.toString()); return Response.temporaryRedirect(new URI(getAppUrl(req))).build(); } catch (TokenResponseException e) { throw new RestException(e); } catch (IOException e) { throw new RestException(e); } catch (URISyntaxException e) { throw new RestException(e); } }
From source file:com.example.contactmgr.server.auth.GPlus.java
License:Open Source License
private User getUserInfo(GoogleTokenResponse accessToken) { try {//from w w w. j av a 2s .c om // Build credential from stored token data. GoogleCredential credential = new GoogleCredential.Builder().setJsonFactory(JSON_FACTORY) .setTransport(TRANSPORT).setClientSecrets(CLIENT_ID, CLIENT_SECRET).build() .setFromTokenResponse( JSON_FACTORY.fromString(accessToken.toString(), GoogleTokenResponse.class)); // Create a new authorized API client. Plus service = new Plus.Builder(TRANSPORT, JSON_FACTORY, credential).setApplicationName(OAUTH_APP_NAME) .build(); // Get a list of people that this user has shared with this app. Person me = service.people().get("me").execute(); User newUser = new User(); GoogleIdToken idToken = accessToken.parseIdToken(); newUser.setEmailAddress(idToken.getPayload().getEmail()); newUser.setGoogleId(idToken.getPayload().getSubject()); newUser.setFirstName(me.getName().getGivenName()); newUser.setLastName(me.getName().getFamilyName()); String imageUrl = me.getImage().getUrl(); newUser.setImgUrl(imageUrl); return newUser; // PeopleFeed people = service.people().list("me", "visible").execute(); } catch (IOException e) { throw new RestException(e); } }
From source file:com.example.listmaker.server.auth.GPlus.java
License:Open Source License
private User getUserInfo(GoogleTokenResponse accessToken) { try {//w w w .j a v a 2 s. c o m // Build credential from stored token data. GoogleCredential credential = new GoogleCredential.Builder().setJsonFactory(JSON_FACTORY) .setTransport(TRANSPORT).setClientSecrets(CLIENT_ID, CLIENT_SECRET).build() .setFromTokenResponse( JSON_FACTORY.fromString(accessToken.toString(), GoogleTokenResponse.class)); // Create a new authorized API client. Plus service = new Plus.Builder(TRANSPORT, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); // Get a list of people that this user has shared with this app. Person me = service.people().get("me").execute(); User newUser = new User(); GoogleIdToken idToken = accessToken.parseIdToken(); newUser.setEmailAddress(idToken.getPayload().getEmail()); newUser.setGoogleId(idToken.getPayload().getSubject()); newUser.setFirstName(me.getName().getGivenName()); newUser.setLastName(me.getName().getFamilyName()); String imageUrl = me.getImage().getUrl(); newUser.setImgUrl(imageUrl); return newUser; // PeopleFeed people = service.people().list("me", "visible").execute(); } catch (IOException e) { throw new RestException(e); } }
From source file:com.google.plus.samples.haikuplus.Authenticate.java
License:Open Source License
/** * Parses an ID token from a TokenResponse. If the parse fails, a 500 is specified and * null is returned, indicating that the ID token Google returned with a Credential object * is invalid. Otherwise, the Google user ID associated with the token is returned. */// w ww . ja v a2s. c o m private String parseIdToken(GoogleTokenResponse tokenResponse, HttpServletResponse response) { try { // You can read the Google user ID in the ID token. GoogleIdToken idToken = tokenResponse.parseIdToken(); return getGoogleIdFromIdToken(idToken); } catch (IOException e) { logger.log(Level.INFO, "Failed to parse ID token from tokenResponse object; return 500", e); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return null; } }
From source file:io.mapping.api.billsplit.resources.AuthResource.java
License:Apache License
@POST @Path("/login") @Consumes(MediaType.APPLICATION_JSON)//ww w.j a v a 2s. co m @Produces(MediaType.APPLICATION_JSON) public UserEntity login() throws IOException { // Return existing user entity from session if applicable UserEntity userEntity = mSessionUserProvider.getUser(mRequest.getSession()); if (userEntity != null) { return userEntity; } // Get the auth token String token = mOAuth2Helper.getToken(mRequest); if (token != null) { GoogleTokenResponse tokenResponse = mOAuth2Helper.parseGoogleToken(token); if (tokenResponse == null) { throw new NoTokenException(500); } String googleId = tokenResponse.parseIdToken().getPayload().getSubject(); EntityManager em = mEntityManagerFactory.createEntityManager(); try { userEntity = em.createNamedQuery("userEntity.findByGoogleId", UserEntity.class) .setParameter("googleId", googleId).getSingleResult(); } catch (NoResultException ex) { // UserEntity does not yet exist userEntity = mUserResource.createMe(mRequest); } finally { em.close(); } setUserInSession(userEntity); return userEntity; } else { // Shouldn't be calling login if we don't already have a token return null; } }
From source file:io.mapping.api.billsplit.resources.ConnectGoogleResource.java
License:Apache License
@POST @Path("google") @Produces(MediaType.APPLICATION_JSON)/*from w w w .j a v a 2s . c o m*/ public GoogleTokenResponse connectGoogle(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("state") final String state) throws IOException { // Check to see if they're already connected String token = mOAuth2Helper.getToken(request); if (token != null) { return mOAuth2Helper.parseGoogleToken(token); } // Allow forcing state if (state != null) { mOAuth2Helper.setState(request, state); } // Ensure the state parameter matches up if (!mOAuth2Helper.checkState(request, response)) { throw new InvalidOAuthStateException(500); } // Get the authorization code ByteArrayOutputStream resultStream = new ByteArrayOutputStream(); getContent(request.getInputStream(), resultStream); String code = new String(resultStream.toByteArray(), "UTF-8"); if (code == null) { throw new NullOAuthCodeException(500); } // Upgrade the authorization code into an access token and refresh token GoogleTokenResponse tokenResponse; try { tokenResponse = new GoogleAuthorizationCodeTokenRequest(mHttpTransport, mJacksonFactory, mGoogleClientSecrets.getWeb().getClientId(), mGoogleClientSecrets.getWeb().getClientSecret(), code, GOOGLE_REDIRECT_URI).execute(); } catch (TokenResponseException ex) { throw new Builder(500).message(ex.getMessage()).build(); } // Parse out the Google+ ID GoogleIdToken idToken = tokenResponse.parseIdToken(); String userId = idToken.getPayload().getSubject(); // Verify the token boolean verified = false; try { verified = new GoogleIdTokenVerifier.Builder(mHttpTransport, mJacksonFactory).build().verify(idToken); } catch (GeneralSecurityException e) { throw new Builder(500).message(e.getMessage()).build(); } if (!verified) { throw new Builder(500).message(Messages.TOKEN_VERIFICATION_FAILED).build(); } // Create a credential representation of the token data GoogleCredential credential = mOAuth2Helper.getGoogleCredential(tokenResponse); // Check token validity mOAuth2Helper.checkGoogleTokenValidity(credential, userId); // Store the token for next time mOAuth2Helper.setToken(request, mJacksonFactory.toString(tokenResponse)); return tokenResponse; }
From source file:org.n52.v3d.terraintools.auth.ConnectServlet.java
License:Open Source License
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json"); // Only connect a user that is not already connected. String tokenData = (String) request.getSession().getAttribute("token"); if (tokenData != null) { response.setStatus(HttpServletResponse.SC_OK); System.out.println("Current user is already connected"); response.getWriter().print(GSON.toJson("Current user is already connected.")); DriveSample.init(tokenData);/* w w w . j a v a 2 s . c om*/ return; } // Normally the state would be a one-time use token, however in our // simple case, we want a user to be able to connect and disconnect // without reloading the page. Thus, for demonstration, we don't // implement this best practice. //request.getSession().removeAttribute("state"); ByteArrayOutputStream resultStream = new ByteArrayOutputStream(); getContent(request.getInputStream(), resultStream); String code = new String(resultStream.toByteArray(), "UTF-8"); try { // Upgrade the authorization code into an access and refresh token. GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, code, "postmessage").execute(); // You can read the Google user ID in the ID token. // This sample does not use the user ID. GoogleIdToken idToken = tokenResponse.parseIdToken(); String gplusId = idToken.getPayload().getSubject(); // Store the token in the session for later use. request.getSession().setAttribute("token", tokenResponse.toString()); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print(GSON.toJson("Successfully connected user.")); tokenData = (String) request.getSession().getAttribute("token"); DriveSample.init(tokenData); } catch (TokenResponseException e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.getWriter().print(GSON.toJson("Failed to upgrade the authorization code.")); } catch (IOException e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.getWriter().print(GSON.toJson("Failed to read token data from Google. " + e.getMessage())); } }
From source file:org.orcsun.sunspace.third.GoogleAPI.java
License:Open Source License
/** * Upgrade given auth code to token, and store it in the session. POST body * of request should be the authorization code. Example URI: * /connect?state=...&gplus_id=.../*from w w w . ja v a 2 s. c om*/ * @throws Exception */ @RequestMapping(value = "/oauth2callback", method = RequestMethod.GET) protected String validateToken(HttpServletRequest request, HttpServletRequest response, Model model) throws Exception { String error = request.getParameter("error"); if (error != null) {//wrong logger.error(error); model.addAttribute("msg", error); return "redirect:/user/redirectLogin"; } else { String code = request.getParameter("code"); logger.info("==========code" + code); String original_state = (String) request.getSession().getAttribute("state"); String state = request.getParameter("state"); if (code != null && state.equals(original_state)) {//request access token GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY, SunConstants.GOOGLE_API_CLIENT_ID, SunConstants.GOOGLE_API_CLIENT_SECRET, code, SunConstants.AUTH_REDIRECT_URL_GOOGLE).execute(); GoogleIdToken idToken = tokenResponse.parseIdToken(); String gplusId = idToken.getPayload().getSubject(); String email = idToken.getPayload().getEmail(); if (email == null) return "redirect:/user/redirectLogin"; else { logger.info("gplusid:" + gplusId); logger.info("email:" + email); User user = userDao.findUserByEmail(email); if (user == null) { user = new User(); user.setName("GoogleUser"); user.setOpenid(gplusId); user.setEmail(email); user.setPasswd(tokenResponse.toString()); long uid = userDao.addUser(user); user.setUid(uid); } // Store the token in the session for later use. request.getSession().setAttribute("token", tokenResponse.toString()); //get user profile GoogleCredential credential = new GoogleCredential.Builder().setJsonFactory(JSON_FACTORY) .setTransport(TRANSPORT) .setClientSecrets(SunConstants.GOOGLE_API_CLIENT_ID, SunConstants.GOOGLE_API_CLIENT_SECRET) .build().setFromTokenResponse( JSON_FACTORY.fromString(tokenResponse.toString(), GoogleTokenResponse.class)); // Create a new authorized API client. Plus service = new Plus.Builder(TRANSPORT, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); // Get a list of people that this user has shared with this app. Person person = service.people().get("me").execute(); user.setPhoto1(person.getImage().getUrl()); user.setName(person.getDisplayName()); user.setPhoto2(person.getCover().getCoverPhoto().getUrl()); request.getSession().setAttribute("user", user); } } return "redirect:/user/admin"; } }