2012-08-30 18 views
12

Estoy perdido en todas las pestañas del navegador abierto para el inicio de sesión único de Google :)Paso a paso Google SSO (java)?

Ya tengo una aplicación que me gustaría poner en el mercado de Google. Y la integración obligatoria es Google SSO. He creado una aplicación en Struts2 con Spring.

Así que ahora necesito algunas instrucciones sobre cómo hacer esta integración. Un ejemplo sería perfecto. O cómo comenzar, qué tecnología utilizar, mejores enfoques, cualquier cosa similar ...

También, tengo que usar Google App Engine para la integración de SSO o no? Honestamente, estoy confundido :)

EDITAR

empecé aquí: developers.google.com/google-apps/marketplace/sso porque uso de Java, si nos fijamos en Primeros pasos en la parte inferior, que quería utilizar el paso 2, pero el vínculo está muerto. Desde allí me he quedado atascado ...

Los enlaces here también están muertos.

+0

¿Por qué no muestras lo que has intentado hasta ahora y nos dices dónde te has trabado? Obtuve SSO trabajando con Twitter y Facebook, así que estoy bastante seguro de que Google debería ser tan fácil. – Quaternion

+0

También lo hice con Facebook y Dropbox, eso fue fácil. Pero ni siquiera puedo encontrar dónde comenzar con Google. Me confundí. Empecé aquí: https://developers.google.com/google-apps/marketplace/sso Como utilizo Java, si miras Empezar en la parte inferior, quería usar el paso 2, pero el enlace está muerto. A partir de ahí me quedé atrapado ... – Trick

+0

Estoy de acuerdo en que ver esa documentación es bastante malo. – Quaternion

Respuesta

7

hice con Apache de HttpClient. Esta es mi solución y funciona perfectamente para mí.

Primer punto a autorización 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>

a continuación, obtener los parámetros de vuelta de su redirect_uri y construir solicitud cuerpo para conseguir 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"; 

Luego, con HttpClient Haz una entrada y con una simple El analizador JSON analiza el token de acceso.

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); 
    } 

Ahora usted tiene un token de acceso y ahora se puede acceder a toda de la API de Google. Por ejemplo, obtener toda la información a los usuarios:

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); 
    } 

Estos datos ahora puede guardar y utilizar para el acceso a la aplicación.

3

Puede seguir el tutorial de Java para el mercado de Google Apps que explica cómo realizar Single Sign-On: https://developers.google.com/google-apps/marketplace/tutorial_java

El tutorial también incluye un enlace para descargar un zip con la fuente de la aplicación y todas las bibliotecas necesarias, incluyendo el paso 2: http://apps-marketplace-resources.googlecode.com/files/helloworld-java-2011050303.zip

Aquí están los enlaces válidos para los rotos en los documentos:

Cuestiones relacionadas