0

考虑到以下调用以在对象上发布操作,确定用户是否已针对所述对象采取操作的代码是什么?将“post”切换为“get”会拉取所有用户的操作(不仅仅是当前的obj),并且将第一个参数替换为对象的URL会引发错误。检查Facebook开放图形对象的操作状态

  • 说明:我想知道用户是否在昨天或之前的某个时间采取了措施。不是目前的通话是否成功。

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

回答

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/

0

没有这样的调用来完成这个。

您应该将以前的操作保存到您的数据库(或保存一个用户已经执行操作的布尔值),或者在/ me/namespace:action的get response中检查上一个操作。在该响应中,您可以筛选当前对象的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); 
    } 
}); 
+0

你误会我的意思。我的意思是“如果用户昨天或以前采取了行动,我该如何判断”。谢谢! – Matrym 2012-07-12 01:34:09

+0

@Matrym您应该将以前的操作保存到您的数据库(或保存一个用户已经执行操作的布尔值),或者在/ me /命名空间的获取响应中检查上一个操作:action – phwd 2012-07-12 01:43:14

+0

如果将答案更改为“这是不可能的”,并附上您的评论,如果没有其他人提出解决方案,我会在几天内将其标记为正确。谢谢你的时间。 – Matrym 2012-07-12 01:47:20

0

应该出现在他们馈您可以检查用户的饲料,如果他们给你的访问令牌使用的应用程序。我做了一个测试/打开图来测试这一点,但既然是我,我可以检查我自己的饲料。与其他用户一样,您必须在访问令牌到期之前捕获访问令牌,并将其填充到FB图形浏览器工具中。

+0

如果它是一年前完成的(成千上万个帖子前),我会很拧。还是)感谢你的建议! – Matrym 2012-07-12 01:59:51

+0

您可以按照应用编号 – 2012-07-12 02:07:59

+0

进行过滤。实际上,洞察会为您提供度量标准,但不会绑定到用户。 – 2012-07-12 02:08:28

相关问题