0

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

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

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

3 回答 3

0

没有这样的调用来实现这一点。

您应该将先前的操作保存到数据库(或保存用户已经执行操作的布尔值)或检查 /me/namespace:action 的获取响应中的最后一个操作。从该响应中,您可以过滤当前对象 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);
   }
});
于 2012-07-10T06:09:15.330 回答
0

它应该出现在他们的提要中 - 如果他们为您提供了使用该应用程序的访问令牌,您可以检查用户的提要。我做了一个带有开放图的测试来测试它,但因为是我,我可以检查我自己的提要。对于另一个用户,您必须在访问令牌过期之前捕获它,并将其填充到 FB 图形浏览器工具中。

于 2012-07-12T01:57:31.930 回答
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/

于 2012-08-02T01:43:18.130 回答