0

そこで私は 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) です。

4

1 に答える 1

0

Looks like some type conversion is going wrong somewhere.

I would guess that the POST_ID semantics that includes an underscore could be causing this. You're probably only interested in posting the second half of such an identifier, which reflects the actual OBJECT_ID of the post.

When you fall back to the POST_ID, try this on your variable (supposing it is a string) before posting:

// Filter out non-significant portion of POST_ID
// (ie. keep only what's after the last underscore, if any)
id = id.split('_').slice(-1)[0]
于 2013-03-03T11:52:32.653 に答える