0

Google プラス コメントで get メソッドと list メソッドを使用しようとしています。公式サイトでは、(すべての API 呼び出しには OAuth 2.0 トークンまたは API キーが必要です) と記載されており、OAuth のステップなしで GET 要求を送信しようとしましたが、それは機能し、json 形式のデータを返します。私の質問は、Google+ API を使用する前に OAuth が必要ですか?

4

2 に答える 2

1

それは、取得しようとしているデータによって異なります。

https://developers.google.com/+/api/oauthは OAuth を使用する利点を説明していますが、一般的に、プライベート プロファイル データを取得する場合、または /me/ URL ショートカットを使用する場合は、 OAuth を使用する必要があり、必要に応じて、さらにアプリ キーを使用することもできます。公開データだけに関心がある場合は、アプリ キーを使用できます。

于 2013-01-09T12:59:51.413 に答える
1

できるかどうかの簡単な答えは、OAuth なしで Google+ からコメントを取得できるということです。

これをどのように行うかについては、どの言語でこれを行っているかわかりませんが、次のコードは JavaScript でこれがどのように行われるかを示しています。

ここで使用される API 呼び出しは、API エクスプローラーで試すことができます。

このコードのデモはこちらです。

Google API コンソールから Google+ API を使用するプロジェクトの 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 に答える