2013-03-23 73 views
1

我一直在尝试编写一个使用谷歌加API的Web应用程序,我需要设置与Java的OAuth访问,我搜索了很多,并发现谷歌Java启动和其他例子和他们很混乱,我不知道我应该写什么代码来获得令牌 我希望如果有人能够直接向我介绍如何通过java访问OAuth,我看到了其他问题在stackoverflow.com但他们不是非常有帮助,我OAuth 2.0访问与谷歌加API在Java中

所以任何帮助将是非常赞赏:)

回答

6

最新Google+ Java Quickstart是非常简单的,也许你发现了奥尔德r项目在搜索时?另外,documentation for getting started on Google+ with Java应该可以帮助您顺利完成任务。

下面的代码片段使用the hybrid client/server flow当您展示了交换授权代码的访问令牌相关代码:

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

我删除执行the requisite checks discussed in this thread为了简单的线条。

 // 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对象。

+0

感谢您的快速回复。我正在使用另一个库,我使用了你提供的那个,它对我有用:) – 2013-03-25 18:55:03

+0

我想问另一个问题,我可以在Google Plus上获得用户流或新闻源吗?或者API只提供访问用户自己的帖子? – 2013-03-25 18:56:14

+0

您应该查看activities.list,https://developers.google.com/+/api/latest/activities/list,了解公共活动数据。随时也可以开始另一个问题。 – class 2013-03-29 04:05:08