2

我一直在尝试使用 Google Plus API 编写一个 Web 应用程序,我需要使用 java 设置 OAuth 访问,我搜索了很多,发现 google java starter 和其他示例,它们非常混乱,我不知道是什么我应该编写以获得令牌的代码我希望如果有人可以告诉我如何通过简单的步骤使用 java 获得 OAuth 访问权限,我在 stackoverflow.com 上看到了其他问题,但它们对我没有多大帮助

所以任何帮助将不胜感激:)

4

1 回答 1

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

为简单起见,我将删除执行此线程中讨论的必要检查的行。

      // Store the token in the session for later use.
      request.session().attribute("token", tokenResponse.toString());

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

获得访问/刷新令牌和到期时间后,为 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();

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

于 2013-03-23T23:40:38.207 回答