そこで私は FB Graph API を試しており、ホーム フィードを表示するだけのこの小さなテスト サイトを作成しました。また、いいねボタンを追加したので、FB と同じように、フィード内のアイテムに「いいね」を付けることができます。
さて、問題があります。API ドキュメントでは、次の場所に投稿する必要があると記載されているためです。
https://graph.facebook.com/OBJECT_ID/likes
ここで、「OBJECT_ID」はオブジェクトの ID です。これは、オブジェクト (写真、共有されたストーリーなど) があればどこでもうまく機能しますが、常にオブジェクトがあるとは限りません。オブジェクトのない最も一般的なアイテムは、おそらくプレーンテキストのステータス更新です。したがって、このコードを実行しようとすると:
function fbLike(id) {
console.log(id);
FB.api('/'+ id +'/likes', 'post', function(response) {
if (!response || response.error) {
alert('Error occured. ID: ' + id);
} else {
alert('Great! It worked. ID: ' + id);
}
});
}
object_id がない場合、次のエラー メッセージが表示されます。
'Error occured. ID: undefined'
OBJECT_ID がないため、これは明らかです。したがって、私が行ったことは、コードで if/else チェックを行って、OBJECT_ID があるかどうかを確認することです。そうでない場合は、代わりに POST_ID (response.data[i].id) を使用します。ただし、これによりコンソールにエラーが表示されます。
SyntaxError: At least one digit must occur after a decimal point
ご存じない場合は、投稿の ID は次のようになります: 1796252809_3826036908205 (一方、OBJECT_ID は次のようになります: 545978668769904)。
だから、私が興味を持っているのは、これをどのように修正できるかということです。object_id がないプレーンテキスト (通常の) ステータス更新にどのように似せますか? FBのウェブサイトにログインして、まったく同じステータスが好きなので、それが可能であることはわかっています.
要約: 通常の投稿にいいね! を付けるにはどうすればよいですか?
誰かがこれを修正する方法を知っていることを願っています! :)
敬具、アレクサンダー。
編集 1: [いいね] ボタンをクリックしようとすると、コンソールに構文エラーが表示されます。しかし、fbLike 関数は実行されません。これは、エラーまたは成功メッセージのいずれかを含む警告メッセージと共に、コンソールに ID が返されるためです。いいねボタンの設定方法はこんな感じです。
var facebook_footer = '<button onClick="fbLike('+object_id+')"> Like </button>';
and
var facebook_footer = '<button onClick="fbLike('+post_id+')"> Like </button>';
(変数として for ループに保存し、.innerHTML を使用して div に出力しています)
post_id は投稿の ID (xxxxxxxxxx_xxxxxxxxxxx) で、object_id はオブジェクト (存在する場合) の ID (xxxxxxxxx) です。