【问题标题】:Get the Post Of User On Google Plus获取用户在 Google Plus 上的帖子
【发布时间】:2013-08-30 19:16:13
【问题描述】:

我在 google plus 上获取用户帖子时遇到问题。我只有这个用户的访问令牌和刷新令牌(不是 ID!),我怎么能从这个用户的 google plus 获得帖子?,我做了很多搜索,但没有一个符合我的情况。当用户在前端提供他的 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。我想错误来自使用“列表”方法中的“我”来检索帖子。我仍然不知道如何解决这个问题

更新#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"
         }

【问题讨论】:

  • 解决了,看我下面的帖子

标签: java google-plus


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我有客户端 ID 和秘密,即“Web 应用程序的客户端 ID”,我还打开了 Google+ Api。所以我认为问题不在于这些方面。 “确保您为用户提供的访问令牌对应于他们对同一个项目的身份验证”您能否告诉我有关此的更多详细信息,前端的人获取访问令牌和刷新令牌,然后他通过了它对我来说,然后我用这个令牌来获取帖子。他也给了我clientId和Secret。也许项目不同?,你这么认为吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-15
    • 2012-09-04
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2015-06-22
    相关资源
    最近更新 更多