Google プラス コメントで get メソッドと list メソッドを使用しようとしています。公式サイトでは、(すべての API 呼び出しには OAuth 2.0 トークンまたは API キーが必要です) と記載されており、OAuth のステップなしで GET 要求を送信しようとしましたが、それは機能し、json 形式のデータを返します。私の質問は、Google+ API を使用する前に OAuth が必要ですか?
2 に答える
それは、取得しようとしているデータによって異なります。
https://developers.google.com/+/api/oauthは OAuth を使用する利点を説明していますが、一般的に、プライベート プロファイル データを取得する場合、または /me/ URL ショートカットを使用する場合は、 OAuth を使用する必要があり、必要に応じて、さらにアプリ キーを使用することもできます。公開データだけに関心がある場合は、アプリ キーを使用できます。
できるかどうかの簡単な答えは、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;
});