获取Google Plus上的用户帖子

时间:2013-08-29 04:29:07

标签: java google-plus

我在google plus上获取用户帖子时遇到了问题。我只有这个用户的访问令牌和刷新令牌(不是ID!),我怎么能从谷歌加上这个用户的帖子?,我做了很多搜索,但没有一个符合我的情况。当用户在前端提供他的google plus Id时,生成访问令牌和刷新令牌并将其存储在数据库中,i,在后端,将使用这些令牌来检索该用户的帖子。 p / s:我使用这个库https://code.google.com/p/google-plus-java-api/,因为它看起来很简单,我不想仅仅为了获得帖子而使用如此复杂的库,非常感谢你们。

这是我的代码

    import com.googlecode.googleplus.GooglePlusFactory;
    import com.googlecode.googleplus.Plus;
    import com.googlecode.googleplus.model.activity.ActivityCollection;
    import com.googlecode.googleplus.model.activity.ActivityFeed;

    public void getInfo(String accessToken, String refreshToken) {

    GooglePlusFactory factory = new GooglePlusFactory(clientId, clientSecret);
    Plus plus = factory.getApi(accessToken, refreshToken,null);
    if (plus != null) {
        ActivityFeed af = plus.getActivityOperations().list("me",ActivityCollection.PUBLIC);
        String firstpost = af.getItems().get(0).getObject().getContent();
     } 

,调用此方法时出现403错误,错误输出为:

 403 Forbidden 
 { 
   "code" : 403, 
    "errors" : [ { 
   "domain" : "usageLimits", 
   "message" : "Daily Limit Exceeded. Please sign up", 
   "reason" : "dailyLimitExceededUnreg", 
   "extendedHelp" : "https://code.google.com/apis/console" 
  } ], 
  "message" : "Daily Limit Exceeded. Please sign up" 
 } 

实际上,我认为原因不是因为超出了每日限制,因为我在第一次运行时收到了该消息,我还在google api控制台上转换了google + api,google + domain api。我想错误来自于使用“list”方法中的“me”来检索帖子。我仍然不知道如何解决这个问题

更新#1 #:

我已经更改了我的代码,所以这里正是我坚持的,我已经获得了一个新的accessToken,并且(当它还没有过期时),我运行以下代码:

        GoogleCredential credential = new GoogleCredential.Builder()
       .setJsonFactory(JSON_FACTORY)
       .setTransport(TRANSPORT)
       .setClientSecrets(CLIENT_ID, CLIENT_SECRET).build().setAccessToken(newAccessToken);


        // 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.
        ActivityFeed feed = service.activities().list("me", "public").execute()

然后我收到了这个错误:

         com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
         {
           "code" : 403,
            "errors" : [ {
           "domain" : "global",
           "message" : "Insufficient Permission",
           "reason" : "insufficientPermissions"
         } ],
          "message" : "Insufficient Permission"
         }

2 个答案:

答案 0 :(得分:2)

使用“我”作为列表调用的ID应该可以正常工作,并且您的代码通常显示正确。

错误消息表明您的客户端未注册。我会检查以确保以下内容:

确保您已为项目创建了客户ID和密码(并且不在此处发布!),并且您正确地将它们传递给GooglePlusFactory。

Authorized API Access

确保此项目已启用Google+ API。

Google+ API

确保您为用户提供的访问令牌与他们对同一项目进行身份验证相对应

答案 1 :(得分:1)

我解决了这个问题,一切都很好,除了1件事,那是访问令牌和刷新令牌是由一些范围而不是范围Plus.me创建的,这就是为什么我不能通过使用这个来请求新的访问令牌刷新令牌,然后我得到了不足的权限错误403.所以当我通过使用相应的范围获得新访问和刷新令牌时,我可以使用关键字“我”查询。希望你的家伙不要像我一样,我需要将近2天才能弄明白