Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一步一步谷歌SSO(java)?_Java_Oauth 2.0_Single Sign On - Fatal编程技术网

一步一步谷歌SSO(java)?

一步一步谷歌SSO(java)?,java,oauth-2.0,single-sign-on,Java,Oauth 2.0,Single Sign On,我迷失在谷歌单一登录的所有打开的浏览器选项卡中:) 我已经有一个应用程序,我想把谷歌市场。而强制性的集成是Google SSO。我已经在Struts2和Spring上构建了应用程序 所以现在我需要一些说明如何进行集成。举个例子就好了。或者如何开始,使用哪种技术,最佳方法,任何类似的 另外,我是否必须使用Google App Engine进行SSO集成?老实说,我很困惑:) 编辑 我从这里开始:因为我使用Java,如果你看一下底部的入门,我想使用step2,但是链接已经失效了。从那以后我就被卡住了

我迷失在谷歌单一登录的所有打开的浏览器选项卡中:)

我已经有一个应用程序,我想把谷歌市场。而强制性的集成是Google SSO。我已经在Struts2和Spring上构建了应用程序

所以现在我需要一些说明如何进行集成。举个例子就好了。或者如何开始,使用哪种技术,最佳方法,任何类似的

另外,我是否必须使用Google App Engine进行SSO集成?老实说,我很困惑:)

编辑

我从这里开始:因为我使用Java,如果你看一下底部的入门,我想使用step2,但是链接已经失效了。从那以后我就被卡住了


链接也已失效。

您可以按照Google Apps Marketplace的Java教程进行操作,该教程解释了如何执行单点登录:

本教程还包括zip的下载链接,其中包含应用程序源代码和所有必需的库,包括步骤2:

以下是文档中断开链接的有效链接:

  • 步骤2:
  • openid4java:
  • gdata java客户端:

我使用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=&redirect_uri=

然后从
重定向\u uri
获取参数,并构建请求主体以获取
访问\u令牌

    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";
现在您有了访问令牌,现在可以访问Google API的all。例如,获取所有用户信息:

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

您现在可以保存这些数据并将其用于登录应用程序

你为什么不展示一下你迄今为止所做的努力,告诉我们你在哪里被卡住了?我已经让SSO与twitter和facebook合作,所以我很确定谷歌也应该一样容易。我也用facebook和Dropbox做过,那很容易。但我甚至找不到谷歌的起点。我只是糊涂了。我从这里开始:因为我使用Java,如果你看一下底部的入门,我想使用step2,但是链接已经失效了。从那以后我就被卡住了……我同意看那个文档很糟糕。@Trick:我相信你们在找这个
    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);
    }