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

Bla*_*awk 2 java api oauth-2.0 google-plus

我一直在尝试使用Google Plus API编写一个Web应用程序,我需要使用java设置OAuth访问,我搜索了很多,发现google java starter和其他示例,他们非常混乱,我无法弄清楚是什么我应该写的代码来获取令牌我希望如果有人可以告诉我如何使用java直接执行OAuth访问,我在stackoverflow.com上看到了其他问题,但它们对我来说不是很有帮助

所以任何帮助将非常感激:)

cla*_*ass 6

最新的Google+ Java快速入门非常简单,也许您在搜索时找到了一个较旧的项目?此外,使用Java开始使用Google+文档应该有助于您前进.

以下代码段显示了在使用混合客户端/服务器流时交换访问令牌的授权代码的相关代码:

      GoogleTokenResponse tokenResponse =
          new GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY,
              CLIENT_ID, CLIENT_SECRET, code, "postmessage").execute();
      // Create a credential representation of the token data.
      GoogleCredential credential = new GoogleCredential.Builder()
          .setJsonFactory(JSON_FACTORY)
          .setTransport(TRANSPORT)
          .setClientSecrets(CLIENT_ID, CLIENT_SECRET).build()
          .setFromTokenResponse(tokenResponse);
Run Code Online (Sandbox Code Playgroud)

为了简单起见,我正在删除执行此线程中讨论的必要检查的行.

      // Store the token in the session for later use.
      request.session().attribute("token", tokenResponse.toString());
Run Code Online (Sandbox Code Playgroud)

这里值得注意的是,除非用户断开您的应用程序,否则您希望保留这些凭据.该示例正在使用会话,因为在生产环境中,会话可以由DB支持,并将在服务器重新启动后恢复.

获得访问/刷新令牌和到期时间后,构建OAuth v2令牌的凭据,然后库将在内部相应地刷新访问令牌.以下代码显示了如何通过从用户会话中检索令牌数据在快速入门上完成此操作,还包括客户端执行的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();
Run Code Online (Sandbox Code Playgroud)

如果您希望以不同方式执行此操作,则可以在构造Plus服务对象之前,从访问令牌,刷新令牌等显式构造tokenData对象.