来自家庭主页的'LIKE'帖子与Facebook图表api

时间:2013-03-03 11:12:53

标签: javascript facebook facebook-graph-api

所以我正在试用FB Graph API,我已经制作了这个只显示你的家庭饲料的小测试网站。我添加了一个喜欢按钮,这样你就可以像在FB上一样喜欢Feed中的项目了。

现在,我有一个问题。因为在API docs中它表示您应该发布到:

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)。

1 个答案:

答案 0 :(得分:0)

看起来某些类型转换出错某处

我猜想包含下划线的POST_ID语义可能导致这种情况。您可能只对发布此类标识符的后半部分感兴趣,该标识符反映了帖子的实际OBJECT_ID。

当你回到POST_ID时,在发布之前试试你的变量(假设它是一个字符串):

// 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]