检查Facebook Open Graph Object的操作状态

时间:2012-07-09 20:15:48

标签: javascript facebook facebook-graph-api fbjs facebook-javascript-sdk

鉴于以下调用对对象发布操作,确定用户是否已对该对象执行操作的代码是什么?将“post”切换为“get”会拉动所有用户的操作(不仅仅是当前的obj),并且用对象的URL替换第一个参数会引发错误。

  • 澄清:我想知道用户是在昨天或之前的某个时间采取了行动。不是当前通话是否成功。

            FB.api('/me/namespace:action', 'post', likeOpts, 
            function(response) {
                if (!response || response.error) {
                    console.log(response.error);
                } else {
                    // success
                }
            });
    

3 个答案:

答案 0 :(得分:0)

没有这样的要求来实现这一目标。

您应该将以前的操作保存到数据库中(或保存用户已经执行操作的布尔值)或检查/ me / namespace:action的get响应中的上一个上一个操作。在该响应中,您可以过滤当前对象URL。

如果是读取操作,则在用户调用操作两次时会出现错误。

如果操作返回操作实例ID,则调用成功并保存。

FB.api(
'/me/namespace:action',
'post',
{ OBJECT_TYPE: 'OBJECT_URL' },
function(response) {
   if (!response || response.error) {
      alert('Error occured');
      console.log(response.error);
   } else {
      alert('Code was successful! Action ID: ' + response.id);
   }
});

答案 1 :(得分:0)

它应该显示在他们的Feed中 - 如果他们已经为您提供了使用该应用的访问令牌,则可以检查该用户的Feed。我做了一个测试w / open graph来测试它,但因为它是我,我可以查看我自己的feed。对于另一个用户,您必须在访问令牌到期之前捕获它,并将其填充到FB图形浏览器工具中。

答案 2 :(得分:0)

我的预期问题的范围已经改变,所以这个答案不是100%直接的,但这是我最终使用的,我认为它可以使未来的观众受益。

我通过js sdk使用以下FQL查询,以查明特定用户是否喜欢特定对象。如果有,它将返回一个带有id的数组。如果没有,它将返回一个空数组:

        FB.api({
            method: 'fql.query',
            query: 'select user_id from like where user_id=' + UserIDVar + ' and object_id=' + ActionIDVar,
            return_ssl_resources: 1
        }, function(response){
            console.log(response);
        });

可以修改FQL查询以满足您的需求,可以在此处引用文档: https://developers.facebook.com/docs/reference/fql/like/