Example usage for com.google.api.client.googleapis.auth.oauth2 GoogleIdToken getPayload

List of usage examples for com.google.api.client.googleapis.auth.oauth2 GoogleIdToken getPayload

Introduction

In this page you can find the example usage for com.google.api.client.googleapis.auth.oauth2 GoogleIdToken getPayload.

Prototype

@Override
    public Payload getPayload() 

Source Link

Usage

From source file:gplus.java

private void callGoogle(HttpServletRequest request, HttpServletResponse response) throws IOException {
    ByteArrayOutputStream resultStream = new ByteArrayOutputStream();
    try {//from   w  ww .  ja  va 2 s.com
        getContent(request.getInputStream(), resultStream);
    } catch (IOException ex) {
        Logger.getLogger(gplus.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        code = new String(resultStream.toByteArray(), "UTF-8");
        System.out.println(code);
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(gplus.class.getName()).log(Level.SEVERE, null, ex);
    }

    //Create a token
    try {
        tokenResponse = new GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY, CLIENT_ID,
                CLIENT_SECRET, code, "postmessage").execute();
        GoogleIdToken idToken = tokenResponse.parseIdToken();
        String gplusId = idToken.getPayload().getSubject();
        tokenData = tokenResponse.toString();
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().print(GSON.toJson("Successfully connected user."));
    } 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()));
    }
    try {
        // 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(tokenData, 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.
        PeopleFeed people = service.people().list("me", "visible").execute();
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().print(GSON.toJson(people));
        System.out.println(people.toString());
    } catch (IOException e) {
        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        response.getWriter().print(GSON.toJson("Failed to read data from Google. " + e.getMessage()));
    }
}

From source file:autenticacion.Autenticador.java

public User validateGoogleToken(String UserToken) {
    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(TRANSPORT, JSON_FACTORY)
            .setAudience(Collections.singletonList(CLIENT_ID)).build();

    // (Receive idTokenString by HTTPS POST)
    GoogleIdToken idToken = null;
    try {//from  w  ww  .  j a va  2  s  .  com
        idToken = verifier.verify(UserToken);
    } catch (GeneralSecurityException | IOException ex) {
        Logger.getLogger(LoginREST.class.getName()).log(Level.SEVERE, null, ex);
    }

    if (idToken != null) {
        GoogleIdToken.Payload payload = idToken.getPayload();
        // Get profile information from payload
        String email = payload.getEmail();
        boolean emailVerified = payload.getEmailVerified();
        if (!emailVerified) {
            System.out.println("Invalid ID token.");
            return null;
        }
        String nombre = (String) payload.get("name");
        String apellido = (String) payload.get("family_name");
        return new User(nombre, apellido, email);

    }
    return null;
}

From source file:bg.neutrino.GoogleLogin.java

public User login() throws Exception {
    DeviceProperties dp = new DeviceProperties();
    String CLIENT_ID = dp.get().getProperty("google.oauth2.api.key");

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jacksonFactory)
            .setAudience(Collections.singletonList(CLIENT_ID))
            // Or, if multiple clients access the backend:
            // .setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2,
            // CLIENT_ID_3))
            .build();/*  ww w  . j  a va 2 s .  c o  m*/

    // (Receive idTokenString by HTTPS POST)
    //System.out.println(idTokenString);

    GoogleIdToken idToken = null;
    try {
        idToken = verifier.verify(idTokenString);
    } catch (GeneralSecurityException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (idToken != null) {
        Payload payload = idToken.getPayload();

        // Print user identifier
        String userId = payload.getSubject();
        //System.out.println("User ID: " + userId);

        // Get profile information from payload
        String email = payload.getEmail();
        boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
        String name = (String) payload.get("name");
        String pictureUrl = (String) payload.get("picture");
        String locale = (String) payload.get("locale");
        String familyName = (String) payload.get("family_name");
        String givenName = (String) payload.get("given_name");

        User user = new User();
        user.setId(userId);
        user.setEmail(email);
        user.setName(name);
        user.setIsGuest(false);

        return user;

    } else {
        throw new Exception("Invalid ID token.");
    }
}

From source file:bg.neutrino.GoogleUser.java

public boolean login() {
    DeviceProperties dp = new DeviceProperties();
    String CLIENT_ID = dp.get().getProperty("google.oauth2.api.key");

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jacksonFactory)
            .setAudience(Collections.singletonList(CLIENT_ID))
            // Or, if multiple clients access the backend:
            // .setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2,
            // CLIENT_ID_3))
            .build();//ww w. j a v  a 2  s.c om

    // (Receive idTokenString by HTTPS POST)
    System.out.println(idTokenString);

    GoogleIdToken idToken = null;
    try {
        idToken = verifier.verify(idTokenString);
    } catch (GeneralSecurityException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (idToken != null) {
        Payload payload = idToken.getPayload();

        // Print user identifier
        String userId = payload.getSubject();
        System.out.println("User ID: " + userId);

        // Get profile information from payload
        String email = payload.getEmail();
        boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
        String name = (String) payload.get("name");
        String pictureUrl = (String) payload.get("picture");
        String locale = (String) payload.get("locale");
        String familyName = (String) payload.get("family_name");
        String givenName = (String) payload.get("given_name");

        return true;

    } else {
        System.out.println("Invalid ID token.");
    }

    return false;
}

From source file:co.carlosandresjimenez.gotit.backend.Utility.java

License:Open Source License

public static String validateGoogleToken(String accessToken) {

    NetHttpTransport transport = new NetHttpTransport();
    JsonFactory mJFactory = new GsonFactory();

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, mJFactory)
            .setAudience(Arrays.asList(CLIENT_ID)).build();

    GoogleIdToken idToken;
    Payload payload;//w  w w. ja  v a2 s  . co  m
    String email = "";

    try {
        idToken = verifier.verify(accessToken);

        if (idToken != null) {
            //System.out.println("Token validated successfully");
        } else {
            //System.out.println("Invalid ID token.");
            return "INVALID";
        }

        payload = idToken.getPayload();

        if (payload != null) {
            email = payload.getEmail();
        }

    } catch (GeneralSecurityException gse) {
        gse.printStackTrace();
        return "INVALID";
    } catch (IOException ioe) {
        ioe.printStackTrace();
        return "INVALID";
    } catch (IllegalArgumentException iae) {
        iae.printStackTrace();
        return "INVALID";
    } catch (Exception e) {
        e.printStackTrace();
        return "INVALID";
    }

    return email;
}

From source file:co.uk.gauntface.devicelab.appengine.utils.GPlusTokenInfo.java

License:Open Source License

public static String getUserId(String token) {
    try {//from  w  w w  . ja va  2  s  . com
        JsonFactory jsonFactory = new JacksonFactory();
        GoogleIdToken idToken = GoogleIdToken.parse(jsonFactory, token);
        if (token == null) {
            return null;
        }

        // Verify valid token, signed by google.com, intended for 3P
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier(new NetHttpTransport(),
                new JacksonFactory());
        if (verifier.verify(idToken)) {
            Payload payload = idToken.getPayload();
            return payload.getSubject();
        }
    } catch (GeneralSecurityException e) {
    } catch (IOException e) {
    }
    return null;
}

From source file:com.devnexus.ting.web.controller.AndroidLoginController.java

License:Open Source License

/**
 * This will verify tokens sent from an Authenticated Android device that
 * the user is who the user says it is./*from ww w  .j  av  a  2  s.c  om*/
 * <p/>
 * Additionally it will create an account if one does not exist.
 */
@RequestMapping(value = "/s/loginAndroid", method = RequestMethod.POST)
@ResponseBody
public String login(HttpServletRequest request, HttpServletResponse response) {

    try {

        AndroidAuthentication auth = GSON.fromJson(request.getReader(), AndroidAuthentication.class);
        String accessToken = auth.idToken;

        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),
                new JacksonFactory()).setAudience(Arrays.asList(CLIENT_ID))
                        // If you retrieved the token on Android using the
                        // Play Services 8.3 API or newer, set
                        // the issuer to "https://accounts.google.com".
                        // Otherwise, set the issuer to
                        // "accounts.google.com". If you need to verify
                        // tokens from multiple sources, build
                        // a GoogleIdTokenVerifier for each issuer and try
                        // them both.
                        .setIssuer("https://accounts.google.com").build();

        GoogleIdToken idToken = verifier.verify(accessToken);
        Payload payload = idToken.getPayload();

        User user;
        try {
            user = (User) userService.loadUserByUsername("google:" + payload.getSubject());
        } catch (UsernameNotFoundException e) {
            user = new User();
            user.setEmail(payload.getEmail());
            user.setUsername("google:" + payload.getSubject());
            user.setUserAuthorities(new HashSet<UserAuthority>(1));
            user.getUserAuthorities().add(new UserAuthority(user, AuthorityType.APP_USER));
            user.setFirstName((String) payload.get("given_name"));
            user.setLastName((String) payload.get("family_name"));
            byte[] password = new byte[16];
            new SecureRandom().nextBytes(password);
            user.setPassword(Arrays.toString(password));

            try {
                userService.addUser(user);
            } catch (DuplicateUserException ex) {
                Logger.getLogger(AndroidLoginController.class.getName()).log(Level.SEVERE, null, ex);
                throw new RuntimeException(ex);
            }

            user = (User) userService.loadUserByUsername(user.getUsername());

        }

        MobileSignIn signIn = new MobileSignIn();
        signIn.setToken(new BigInteger(512, new SecureRandom()).toString(32));
        signIn.setUser(user);
        user.getMobileTokens().add(signIn);

        userService.updateUser(user);

        return "{\"token\":\"" + signIn.getToken() + "\"}";

    } catch (IOException | GeneralSecurityException e) {
        Logger.getAnonymousLogger().log(Level.SEVERE, e.getMessage(), e);

        throw new RuntimeException(e);
    }

}

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=/*  ww w  .  j  a  v a 2 s .  c om*/
 */
@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 ww. java2 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(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 {//from w w  w.ja v a2s.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);
    }

}