使用java中的Google Plus API访问OAuth 2.0

使用java中的Google Plus API访问OAuth 2.0,java,api,oauth-2.0,google-plus,Java,Api,Oauth 2.0,Google Plus,我一直在尝试使用Google Plus API编写一个web应用程序,我需要用java设置OAuth access,我搜索了很多,发现Google java starter和其他示例,它们非常混乱,我不知道应该编写什么代码来获取令牌 我希望如果有人能告诉我如何用java直接访问OAuth,我在stackoverflow.com上看到了其他问题,但这些问题对我帮助不大 因此,任何帮助都将不胜感激:)最新的非常简单,也许您在搜索时发现了一个较旧的项目?此外,这也应该有助于你的行动 以下代码段向您展示

我一直在尝试使用Google Plus API编写一个web应用程序,我需要用java设置OAuth access,我搜索了很多,发现Google java starter和其他示例,它们非常混乱,我不知道应该编写什么代码来获取令牌 我希望如果有人能告诉我如何用java直接访问OAuth,我在stackoverflow.com上看到了其他问题,但这些问题对我帮助不大

因此,任何帮助都将不胜感激:)

最新的非常简单,也许您在搜索时发现了一个较旧的项目?此外,这也应该有助于你的行动

以下代码段向您展示了在使用时为访问令牌交换授权代码的相关代码:

为了简单起见,我删除了这些行

      // Store the token in the session for later use.
      request.session().attribute("token", tokenResponse.toString());
这里值得注意的是,除非用户断开应用程序的连接,否则您希望保留这些凭据。此示例使用的是会话,因为在生产环境中,会话可以由DB备份,并将在服务器重新启动后恢复

获得访问/刷新令牌和过期时间后,为OAuth v2令牌构建凭据,然后库将在内部适当地刷新访问令牌。下面的代码显示了如何通过从用户会话检索令牌数据在quickstart上完成此操作,还包括客户端执行的API调用,以证明服务器的Java客户端正在工作:

      // Build credential from stored token data.
      GoogleCredential credential = new GoogleCredential.Builder()
          .setJsonFactory(JSON_FACTORY)
          .setTransport(TRANSPORT)
          .setClientSecrets(CLIENT_ID, CLIENT_SECRET).build()
          .setFromTokenResponse(JSON_FACTORY.fromString(
              tokenData, GoogleTokenResponse.class));
      // Create a new authorized API client.
      Plus service = new Plus.Builder(TRANSPORT, JSON_FACTORY, credential)
          .setApplicationName(APPLICATION_NAME)
          .build();
      // Get a list of people that this user has shared with this app.
      PeopleFeed people = service.people().list("me", "visible").execute();

如果您想以不同的方式执行此操作,可以在构建Plus服务对象之前,从access token、refresh token等显式构建tokenData对象。

感谢您的快速响应。我使用的是另一个库,我使用的是你提供的库,它对我有效:)我想问另一个问题,我可以在Google Plus上访问用户流或新闻源吗?或者API只提供对用户自己帖子的访问?您应该查看activities.list,以读取公共活动数据。请随意开始另一个问题。我仍然在寻找一个使用google+登录的简单示例。我不需要脱机访问,我不想代表用户进行API调用。我只想对用户进行身份验证,并获取用户的一些简单属性。也许我遗漏了一些东西,但OpenID更容易实现。@bert我要做的最简单的演示,仅限于客户端。注意:Google+登录在OAuth 2.0之上工作,因此如果您对它更满意,您仍然可以使用OAuth授权客户端。
      // Build credential from stored token data.
      GoogleCredential credential = new GoogleCredential.Builder()
          .setJsonFactory(JSON_FACTORY)
          .setTransport(TRANSPORT)
          .setClientSecrets(CLIENT_ID, CLIENT_SECRET).build()
          .setFromTokenResponse(JSON_FACTORY.fromString(
              tokenData, GoogleTokenResponse.class));
      // Create a new authorized API client.
      Plus service = new Plus.Builder(TRANSPORT, JSON_FACTORY, credential)
          .setApplicationName(APPLICATION_NAME)
          .build();
      // Get a list of people that this user has shared with this app.
      PeopleFeed people = service.people().list("me", "visible").execute();