鉴于以下调用对对象发布操作,确定用户是否已对该对象执行操作的代码是什么?将“post”切换为“get”会拉动所有用户的操作(不仅仅是当前的obj),并且用对象的URL替换第一个参数会引发错误。
澄清:我想知道用户是在昨天或之前的某个时间采取了行动。不是当前通话是否成功。
FB.api('/me/namespace:action', 'post', likeOpts,
function(response) {
if (!response || response.error) {
console.log(response.error);
} else {
// success
}
});
答案 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/