Подтвердить что ты не робот

Шаг за шагом Google SSO (java)?

Я потерял все открытые вкладки браузера для единого входа Google:)

У меня уже есть приложение, которое я бы хотел поставить на рынок Google. И обязательная интеграция - это SSO Google. Я создал приложение на Struts2 с Spring.

Итак, теперь мне нужны инструкции, как сделать эту интеграцию. Пример был бы идеальным. Или как начать, какую технологию использовать, лучшие подходы, что-то подобное...

Кроме того, мне нужно использовать Google App Engine для интеграции с SSO или нет? Честно говоря, я смущен:)

ИЗМЕНИТЬ

Я начал здесь: developers.google.com/google-apps/marketplace/sso Поскольку я использую Java, если вы посмотрите на начало работы внизу, я хотел бы использовать step2, но ссылка мертва, Оттуда я застрял...

Ссылки здесь также мертвы.

4b9b3361

Ответ 1

Я сделал с Apache HttpClient. Это мое решение и отлично работает для меня.

Сначала укажите URL авторизации:

https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email&state=%2Fprofile&response_type=code&client_id=<YOUR_CLIENT_ID>&redirect_uri=<YOUR_CALLBACK_URL>

Затем верните параметры из своего redirect_uri и тела запроса на создание для получения access_token:

    String code =  request.getParameter("code");
    String foros = "code="+code +
                "&client_id=<YOUR_CLIENT_ID>" +
                "&client_secret=<YOUR_CLIENT_SECRET>" +
                "&redirect_uri="+getText("google.auth.redirect.uri") +
                "&grant_type=authorization_code";

Затем с помощью HttpClient сделайте POST и с простым парсером JSON проанализируйте токен доступа.

    HttpClient client = new HttpClient();
    String url = "https://accounts.google.com/o/oauth2/token";
    PostMethod post = new PostMethod(url);
    post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    try {
        post.setRequestEntity(new StringRequestEntity(foros, null, null));
    } catch (UnsupportedEncodingException e) {
        throw new RuntimeException(e);
    }
    String accessToken = null;
    try {
        client.executeMethod(post);
        String resp = post.getResponseBodyAsString();
        JSONParser jsonParser = new JSONParser();
        Object obj = jsonParser.parse(resp);
        JSONObject parsed = (JSONObject)obj;            
        accessToken = (String) parsed.get("access_token");
    } catch (HttpException e) {
        throw new RuntimeException(e);
    } catch (IOException e) {
        throw new RuntimeException(e);
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }

Теперь у вас есть токен доступа, и теперь вы можете получить доступ к всем Google API. Например, чтобы получить информацию о всех пользователях:

    GetMethod getUserInfo = new GetMethod("https://www.googleapis.com/oauth2/v1/userinfo?access_token="+accessToken);

    String googleId = null;
    String email = null;
    String name = null;
    String firstName = null;
    String lastName = null;
    try {
        client.executeMethod(getUserInfo);
        String resp = getUserInfo.getResponseBodyAsString();
        JSONParser jsonParser = new JSONParser();
        Object obj = jsonParser.parse(resp);
        JSONObject parsed = (JSONObject)obj;
        googleId = (String) parsed.get("id");
        email = (String) parsed.get("email");
        name = (String) parsed.get("name");
        firstName = (String) parsed.get("given_name");
        lastName = (String) parsed.get("family_name");
    } catch (IOException e) {
        throw new RuntimeException(e);
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }

Эти данные теперь можно сохранить и использовать для входа в приложение.

Ответ 2

Вы можете следить за учебником Java для Marketplace Google Apps, в котором объясняется, как выполнять Single Sign-On: https://developers.google.com/google-apps/marketplace/tutorial_java

В учебнике также есть ссылка для загрузки zip с источником приложения и всеми необходимыми библиотеками, включая step2: http://apps-marketplace-resources.googlecode.com/files/helloworld-java-2011050303.zip p >

Вот допустимые ссылки для разбитых в документах: