List of usage examples for com.google.api.client.googleapis.auth.oauth2 GoogleIdTokenVerifier.Builder GoogleIdTokenVerifier.Builder
public Builder(HttpTransport transport, JsonFactory jsonFactory)
From source file:io.mapping.api.billsplit.resources.ConnectGoogleResource.java
License:Apache License
@POST @Path("google") @Produces(MediaType.APPLICATION_JSON)/*w w w . j a v a2s . com*/ 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; }