我想设计一个功能齐全的喜欢/不同,分享和评论的新闻源,当然还可以从newfeed用户那里获取最近的帖子。现在是这样的,我想检查用户是否喜欢帖子(类型是视频,照片,链接或状态)。
如果用户已经喜欢该帖子,则显示不同于按钮,如果用户不喜欢,则显示类似按钮。
FILES:
index.php点击打开文件
现在这里几乎没有问题: 1-问题是,当我运行此代码时,它只显示来自newsfeed的一个帖子。但是如果我从代码中删除以下代码,它将从newsfeed中获取20个帖子。我不知道发生了什么。
$ret = $facebook->api(array(
'method' => 'fql.query',
'query' => "SELECT like_info FROM $type WHERE object_id=$object_id"
));
$checklike = $ret['data']['like_info']['user_likes'];
2 - 我们只能将object_id用于照片,专辑和视频。但是你无法使用它来获取链接和状态类型的like_info。所以我需要新方法和新技术来找到用户喜欢的帖子或者不
3 - 每当我在foreach循环中添加一个新的$ facebook-> api()时,它将从fb中获取1-3个帖子,甚至不是全部。
所以,如果你无论如何都能找到一个功能完全正常的新闻提要/不同,分享和评论,当然还有来自用户新近发布的帖子或修复我提到的问题,那就太棒了。
请尽快帮助我,如果您需要什么,只需发表评论,我会为您提供。
感谢。
答案 0 :(得分:0)
以下是您的几个问题的解决方案:
问题:是当我运行此代码时,它只显示来自newsfeed的一个帖子。但是如果我从代码中删除以下代码,它将从newsfeed中获取20个帖子。我不知道发生了什么。
$ret = $facebook->api(array(
'method' => 'fql.query',
'query' => "SELECT like_info FROM $type WHERE object_id=$object_id"
));
$checklike = $ret['data']['like_info']['user_likes'];
答案:上面的代码正在过滤您的内容,在这里您要检查20个帖子(您正在拉动)中的每个帖子并单独循环并检查它是否为状态,照片,视频,链接等是否被登录用户喜欢?以上查询仅适用于type = Photo,type = Link,据我记得只有Photos,Links有like_info对象,但你需要参考FQL文档。对于照片以外的帖子,链接使用此查询:
SELECT like_info FROM stream WHERE post_id ='$id'
有关详情,请点击此处查看 - https://developers.facebook.com/docs/reference/fql
问题:我们只能将object_id用于照片,相册和视频。但是你无法使用它来获取链接和状态类型的like_info。所以我需要新方法和新技术来查找用户是否喜欢帖子
回答:对于like_info使用流表。
问题: - 每当我在foreach循环中添加一个新的$ facebook-> api()时,它将从Facebook获取1-3个帖子,甚至不是全部。
回答:我没有得到这个?
修改强>
你能告诉我一个问题#3的例子
答案 1 :(得分:0)
data
是一个数组,将您的代码编辑为 -
$checklike = $ret['data'][0]['like_info']['user_likes'];
或循环每个对象,如果您期望多个结果,如:
foreach($ret['data'] as $data)
echo $checklike = $data['like_info']['user_likes'];
<强>更新强>
今天最新版的Graph API是v2.8。在这个版本中你也可以得到反应。使用反应比使用反应更好,因为反应还包括喜欢不喜欢的Love,WOW和HAHA等反应。
您可以添加反应摘要的字段,而不是喜欢的摘要,如下所示
fields=reactions.limit(0).summary(true)
使用此功能,您将获得如下的反应摘要
"reactions": {
"data": [
],
"summary": {
"total_count": 6,
"viewer_reaction": "LOVE"
}
}, ......
注意"viewer_reaction": "LOVE"
,这意味着你已经对爱的帖子做出了反应。它的价值可以是LIKE, LOVE, HAHA, WOW, SAD, ANGRY, NONE
中的任何一个。 NONE
表示您不喜欢该帖子。