2012-08-30 4 views
12

Ich bin in allen meinen offenen Browser-Registerkarten für Google Single Sign-On verloren :)Schritt für Schritt Google SSO (Java)?

Ich habe bereits eine Anwendung, die ich auf Google Marktplatz platzieren möchte. Und obligatorische Integration ist Google SSO. Ich habe Anwendung auf Struts2 mit Spring erstellt.

So jetzt brauche ich einige Anweisungen, wie man diese Integration macht. Ein Beispiel wäre perfekt. Oder wie man startet, welche Technologie zu verwenden, beste Ansätze, alles ähnliche ...

Auch, muss ich Google App Engine für SSO-Integration oder nicht verwenden? Ehrlich gesagt, ich bin verwirrt :)

EDIT

ich hier anfing: developers.google.com/google-apps/marketplace/sso Weil ich Java verwenden, wenn Sie am unteren Rand gestartet sehen Erste, wollte ich step2 verwenden, aber der Link ist tot. Von da an steckte ich fest ...

Links here sind auch tot.

+0

Warum zeigst du nicht, was du bisher versucht hast und sagst uns, wo du stecken geblieben bist? Ich habe SSO mit Twitter und Facebook arbeiten lassen, also bin ich mir ziemlich sicher, dass Google so einfach sein sollte. – Quaternion

+0

Ich habe es auch mit Facebook und Dropbox gemacht, das war einfach. Aber ich kann nicht einmal herausfinden, wo ich mit Google anfangen soll. Ich war nur verwirrt. Ich habe hier begonnen: https://developers.google.com/google-apps/marketplace/sso Da ich Java benutze, wenn Sie unten im ersten Abschnitt "Erste Schritte" sehen, wollte ich "step2" verwenden, aber der Link ist nicht mehr aktuell. Von da an blieb ich stecken ... – Trick

+0

Ich stimme zu, dass die Dokumentation ziemlich schlecht ist. – Quaternion

Antwort

7

ich mit Apache gemacht Httpclient. Das ist meine Lösung und funktioniert perfekt für mich.

Erster Punkt zulassungs 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>

Dann Parameter von Ihrem redirect_uri zurück und fordern Körper bauen access_token für immer:

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"; 

Dann mit Httpclient eine POST machen und mit einfachen JSON-Parser analysiert das Zugriffstoken.

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

Jetzt haben Sie die Zugriffstoken und Sie können jetzt Zugriff alle der Google API. Zum Beispiel erhalten alle Benutzer Informationen:

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

Diese Daten können Sie jetzt speichern und verwenden Sie für die Anmeldung an Ihre Anwendung.

3

Sie können die Java-Tutorial für den Google Apps Marketplace folgen, die erklärt, wie Single Sign-On auszuführen: https://developers.google.com/google-apps/marketplace/tutorial_java

Das Tutorial auch für einen Reißverschluss mit der Anwendung Quelle und alle erforderlichen Bibliotheken einen Download-Link enthält, einschließlich Schritt 2: http://apps-marketplace-resources.googlecode.com/files/helloworld-java-2011050303.zip

Hier sind gültig Links für die fehlerhaften, in der Dokumentation: