使用Facebook Graph API检查用户是否喜欢帖子

时间:2013-08-11 17:54:31

标签: php facebook facebook-graph-api news-feed

我想设计一个功能齐全的喜欢/不同,分享和评论的新闻源,当然还可以从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个帖子,甚至不是全部。

所以,如果你无论如何都能找到一个功能完全正常的新闻提要/不同,分享和评论,当然还有来自用户新近发布的帖子或修复我提到的问题,那就太棒了。

请尽快帮助我,如果您需要什么,只需发表评论,我会为您提供。

感谢。

2 个答案:

答案 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表示您不喜欢该帖子。