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

Php 使用Facebook Graph API检查用户是否喜欢帖子,php,facebook,facebook-graph-api,feed,Php,Facebook,Facebook Graph Api,Feed,我想设计一个功能齐全的喜欢/不喜欢、分享和评论的新闻提要,当然还有从用户newfeed获取最近的帖子。现在,我想检查用户是否喜欢帖子(类型是视频、照片、链接或状态) 如果用户已经喜欢该帖子,则显示“不喜欢”按钮;如果用户不喜欢,则显示“喜欢”按钮 档案: 单击以打开该文件 现在这里有几个问题: 1-问题是,当我运行此代码时,它只显示新闻源中的一篇文章。但如果我从代码中删除以下代码,它将从新闻源中获取20篇文章。我不知道发生了什么 $ret = $facebook->api(array( '

我想设计一个功能齐全的喜欢/不喜欢、分享和评论的新闻提要,当然还有从用户newfeed获取最近的帖子。现在,我想检查用户是否喜欢帖子(类型是视频、照片、链接或状态)

如果用户已经喜欢该帖子,则显示“不喜欢”按钮;如果用户不喜欢,则显示“喜欢”按钮

档案:

单击以打开该文件

现在这里有几个问题: 1-问题是,当我运行此代码时,它只显示新闻源中的一篇文章。但如果我从代码中删除以下代码,它将从新闻源中获取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'];
$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-我们只能将对象id用于照片、相册和视频。但您不能使用它来获取链接和状态类型的相似信息。因此,我需要新方法和新技术来确定用户是否喜欢帖子

3-每当我在foreach循环中添加一个新的$facebook->api(),它都会从fb获取1-3篇帖子,甚至不是全部

因此,如果你能找到一个功能齐全的喜欢/不喜欢、分享和评论的新闻提要,当然还可以从用户那里获取最新的帖子,或者修复我提到的问题,那就太好了

请尽快帮助我,如果你需要什么,请留言,我会提供给你


谢谢。

以下是您的几个问题的解决方案:

问题:是当我运行此代码时,它只显示新闻源中的一篇文章。但如果我从代码中删除以下代码,它将从新闻源中获取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'];
$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,据我所知,只有照片,链接有like_info对象,不过您需要参考FQL文档。对于照片以外的帖子,链接使用以下查询:

SELECT like_info FROM stream WHERE post_id ='$id'
有关更多信息,请在此处查看-
https://developers.facebook.com/docs/reference/fql

问题:我们只能将对象id用于照片、相册和视频。但您不能使用它获取链接和状态类型的相似信息。因此,我需要一种新方法和新技术来确定用户是否喜欢帖子

回答:使用流表获取相似信息

问题:-每当我在foreach循环中添加一个新的$facebook->api(),它都会从facebook获取1-3篇帖子,甚至不是全部

回答:我没有得到这个

编辑:


你能给我举一个例子吗#3

数据
是一个数组,请编辑你的代码-

$checklike = $ret['data'][0]['like_info']['user_likes'];
或围绕每个对象循环,如果您希望得到多个结果,如:

foreach($ret['data'] as $data)
 echo $checklike = $data['like_info']['user_likes'];
更新

今天,Graph API的最新版本是v2.8。在这个版本中,你也可以得到反应。使用反应比使用喜欢要好,因为反应还包括爱、哇和哈哈等喜欢没有的反应

您可以添加“反应摘要”字段,而不是“喜欢的摘要”,如下所示
fields=reactions.limit(0)。summary(true)

使用此选项,您将获得以下反应摘要

"reactions": {
        "data": [
        ],
        "summary": {
          "total_count": 6,
          "viewer_reaction": "LOVE"
        }
      }, ......

注意
“观众的反应”:“爱”
这意味着你对这篇文章的反应是爱。它的价值可以是
中的任何一个,比如,爱,哈哈,哇,悲伤,愤怒,无。
NONE
表示您不喜欢这篇文章。

让我们暂时忘记第三个错误。我在fql中遇到了这个错误:而且当我在代码中使用$id($post['id'])尝试它时,它不会带来任何数据,我尝试从我的一个实际配置文件状态粘贴我的一个帖子id,它会打印出以下内容: