0

我正在尝试将 get 和 list 方法与 google plus 评论一起使用。在官方网站上它说(所有 API 调用都需要 OAuth 2.0 令牌或 API 密钥。)并且我尝试在没有 OAuth 步骤的情况下发送 GET 请求,它可以返回 json 格式的数据。我的问题是在使用 google+ API 之前必须要求 OAuth?

4

2 回答 2

1

能否做到这一点的简短回答是,您可以在没有 OAuth 的情况下从 Google+ 获得评论。

至于您将如何执行此操作,我不确定您使用哪种语言执行此操作,但以下代码显示了如何在 JavaScript 中执行此操作。

此处使用的 API 调用可以在 API 资源管理器中进行试验:

此代码的演示在这里

您将需要一个 API 密钥(简单密钥),用于使用来自Google API 控制台的 Google+ API 的项目。设置项目时,您只需从服务部分启用 Google+ API。

首先,使用公共数据 API 抓取活动:

// Gets the activities for a profile
function getActivities(profileID){
  var activities = null;      
  var URL        = "https://www.googleapis.com/plus/v1/people/" + profileID +         "/activities/public?alt=json&key=" + key;
  var request = new XMLHttpRequest();
  request.open('GET', URL, false);
  request.send(); // because of "false" above, will block until the request is done 
                  // and status is available. Not recommended, however it works for simple cases.

  if (request.status === 200) {
    if (debug) console.log("retrieved activities \n\n");
    var activities = jQuery.parseJSON(request.responseText).items;
    console.log("Discovered " + activities.length + " activities");
  }else{
    handleRequestIssue(request);
  }

  return activities;
}

以下代码循环遍历活动

for (var i=0; i < activities.length; i++) {
        console.log("trying to do something with an activity: " + i);
        var activity = activities[i];

        console.log(activity.id);
}

接下来,您可以使用活动 ID 来检索每个活动的评论:

function getCommentsForActivity(activityID){
  var comments = "";      
  var URL        = "https://www.googleapis.com/plus/v1/activities/" + activityID + "/comments?alt=json&key=" + key;
  var request = new XMLHttpRequest();
  request.open('GET', URL, false);
  request.send(); // because of "false" above, will block until the request is done 
              // and status is available. Not recommended, however it works for simple cases.

  if (request.status === 200) {
    if (debug) console.log(request.responseText);
    var comments  = jQuery.parseJSON(request.responseText).items;

    if (debug){
      for (comment in comments){
        console.log(comment);
      }
    } 

  }else{
    handleRequestIssue(request);
  }

  return comments;
}


function manualTrigger(){
  var activities = getActivities("109716647623830091721");
}

以下代码将所有内容组合在一起并检索特定帖子的活动和评论:

$(document).ready(function () {

  var renderMe = "";
  var activities = getActivities("109716647623830091721");

  console.log("activities retrieved: " + activities.length);

  for (var i=0; i < activities.length; i++) {
    console.log("trying to do something with an activity: " + i);
    var activity = activities[i];

    renderMe += "<br/><div class=\"article\"><p>" + activity.title + "</p>";
    console.log(activity.id);

    // get comments
    var comments = getCommentsForActivity(activity.id);
    for (var j=0; j<comments.length; j++){
      renderMe += "<br/><div class=\"comment\">" + comments[j].object.content + "</div>";
    }
    renderMe += "</div>";
  }
  console.log("I'm done");

  document.getElementById("ac").innerHTML = renderMe;
});
于 2013-01-09T18:35:37.577 回答
1

这取决于您要获取的数据。

https://developers.google.com/+/api/oauth记录了使用 OAuth 的好处,但一般来说,如果您想获取私人个人资料数据,或者如果您希望使用 /me/ URL 快捷方式,您将需要使用 OAuth,如果您愿意,还可以使用 App Key。如果您只对公共数据感兴趣,则可以使用 App Key。

于 2013-01-09T12:59:51.413 回答