我正在使用javascript sdk开发一个facebook应用程序,它可以检索特定的墙贴,并允许用户喜欢或不喜欢它们。要完成此功能,我需要知道用户是否喜欢每个帖子开头。确定这个的最佳方法是什么?我考虑检索特定帖子的所有喜欢,迭代id并根据用户的id测试每个,但这似乎不是一个有效的解决方案。有更好的想法吗?提前谢谢。
答案 0 :(得分:1)
只要您知道user_id
和post_id
这是一项简单的任务:
FB.api({
method: 'fql.query',
query: 'SELECT object_id FROM like WHERE post_id="post_id" AND user_id=me()'
},
function(response) {
if(response.length) {
// the user likes the post!
}
}
);
使用的表:like
答案 1 :(得分:0)
有可能,您可以在json数组中获取它。 然后检查您的用户是否喜欢它。 我不认为有其他方式,但让等待有经验的用户回答这个问题;) http://developers.facebook.com/docs/reference/api/post/
答案 2 :(得分:0)
考虑使用FQL来解决这个问题。您可以使用like
(docs)表来检索喜欢帖子的用户列表。拥有此列表,您可以检查您的用户是否为IN
列表。
您只需检索一次此列表,然后检查您的ID(或ids)。
javascript中的示例:
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
FB.api({
method: 'fql.query',
query: 'SELECT user_id FROM like WHERE object_id=193397964020317'
},
function(response) {
var results = [];
for (var i = 0; i < response.length; i++) {
results.push(response[i].user_id);
}
if (results.indexOf("725047048") != -1) {
// exists
} else {
// doesnt exists
}
}
);
</script>
我也在PHP中给你一个例子,也许有人需要它:
$results = json_decode(file_get_contents("https://api.facebook.com/method/fql.query?query=".urlencode("SELECT user_id FROM like WHERE object_id='193397964020317'")."&format=json"));
if ($results) {
$user_ids = array();
foreach ($results as $result) {
$user_ids[] = $result->user_id;
}
}
var_dump($user_ids);
if (in_array(CURRENT_USER_ID, $user_ids)) {
// exists
} else {
// does not exists
}
祝你好运!