2012-08-30 10 views
12

Mi sono perso in tutte le mie schede aperte del browser per Google single sign on :)Passo dopo passo Google SSO (java)?

Ho già un'applicazione che vorrei mettere sul mercato di Google. E l'integrazione obbligatoria è Google SSO. Ho creato un'applicazione su Struts2 con Spring.

Quindi ora ho bisogno di alcune istruzioni su come realizzare questa integrazione. Un esempio sarebbe perfetto. O come iniziare, quale tecnologia utilizzare, i migliori approcci, qualcosa di simile ...

Inoltre, devo usare utilizzare Google App Engine per l'integrazione SSO o no? Onestamente, io sono confuso :)

EDIT

ho iniziato qui: developers.google.com/google-apps/marketplace/sso Perché io uso Java, se si guarda al Iniziare in fondo, ho voluto usare STEP2, ma il collegamento è morto. Da lì in poi sono rimasto bloccato ...

I collegamenti here sono anche morti.

+0

Perché non mostrare ciò che hai provato finora e dirci dove sei rimasto bloccato? Ho ottenuto SSO lavorando con Twitter e Facebook, quindi sono abbastanza sicuro che Google dovrebbe essere altrettanto facile. – Quaternion

+0

L'ho fatto anche con Facebook e Dropbox, è stato facile. Ma non riesco nemmeno a trovare da dove iniziare con Google. Mi sono solo confuso Ho iniziato qui: https://developers.google.com/google-apps/marketplace/sso Perché uso Java, se si guarda Getting started in basso, volevo usare step2, ma il link è morto. Da lì in poi sono rimasto bloccato ... – Trick

+0

Concordo sul fatto che la documentazione sia piuttosto scadente. – Quaternion

risposta

7

ho fatto con Apache di HttpClient. Questa è la mia soluzione e funziona perfettamente per me.

Primo punto per l'autorizzazione 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>

quindi ottenere parametri indietro dal vostro redirect_uri e costruire richiesta del corpo per ottenere 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"; 

Poi, con HttpClient fare un post e semplice Il parser JSON analizza il token di accesso.

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

Ora avete il token di accesso e ora è possibile accedere a tutte delle API di Google. Ad esempio, ottenendo tutte le informazioni degli utenti:

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

Questi dati ora possono essere salvati e utilizzati per l'accesso all'applicazione.

3

È possibile seguire il tutorial Java per Google Apps Marketplace, che spiega come eseguire Single Sign-On: https://developers.google.com/google-apps/marketplace/tutorial_java

Il tutorial include anche un link per scaricare uno zip con la sorgente dell'applicazione e tutte le librerie richieste, tra cui step2: http://apps-marketplace-resources.googlecode.com/files/helloworld-java-2011050303.zip

Ecco i link validi per i più rotti nella documentazione: