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 (xxxxxxxxxxx_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 回答