Facebook 一个API调用中的附加信息
下面给出了我的代码为我的Facebook页面输出帖子、喜欢、评论和共享的数量。它只考虑当前一周的数据。这是使用fql qpproach完成的(我知道fql已被弃用,但我的代码运行良好,因为我使用的应用程序是较旧的应用程序)。我有几个问题要问,需要帮助才能完成:Facebook 一个API调用中的附加信息,facebook,facebook-graph-api,facebook-fql,facebook-php-sdk,fql.multiquery,Facebook,Facebook Graph Api,Facebook Fql,Facebook Php Sdk,Fql.multiquery,下面给出了我的代码为我的Facebook页面输出帖子、喜欢、评论和共享的数量。它只考虑当前一周的数据。这是使用fql qpproach完成的(我知道fql已被弃用,但我的代码运行良好,因为我使用的应用程序是较旧的应用程序)。我有几个问题要问,需要帮助才能完成: 我需要帮助转换此代码使用最新的api方法,以便它可以在新创建的应用程序上工作 代码可以输出喜欢、评论和共享的总数,但是否可以获取过去一周喜欢、评论和共享我页面帖子的人的用户名,并更新数据库表中的值?如果是,如何进行 如果第2点是可能的,那
<?php
require('config.php');
session_start();
?>
<?php
$facebook = new Facebook(array(
'appId' => '012myappid210',
'secret' => 'abc012myappsecret210cba',
'cookie' => true,
));
$token=$_SESSION['token'];
$pageid='88978302070'; //(my facebook page id)
$d=strtotime("now");
$d2=strtotime('now - 7 days');
$fqlAPIParams = array(
'method' => 'fql.query',
'query' =>'
SELECT post_id,comments,message,likes,created_time,share_count
FROM stream
WHERE actor_id = '.$pageid.' AND
source_id = '.$pageid.' AND created_time <= '.$d.' AND created_time >= '.$d2.'
LIMIT 250' ,
'access_token'=>$token
);
$result = $facebook->api($fqlAPIParams);
$postCount = 0;
$likescount=0;
$commentscount=0;
$sharescount=0;
foreach($result as $post)
{
$shares=$post['share_count'];
$likes=$post['likes']['count'];
$comments=$post['comments']['count'];
$likescount+=$likes;
$commentscount+=$comments;
$sharescount+=$shares;
$postCount++;
}
echo "Post " . $postCount . " Likes " . $likescount . " Comments " . $commentscount . " Shares " . $sharescount;
?>
PageID 88978302070在过去30天内(10月31日和10月21日)有2篇帖子
我所做的改动很少:1.我将
'until'
改为'since'
88978302070/posts?字段=喜欢、评论、共享&自=-30天。
2.我更改了内部循环,因为我发现的另一个问题是。。。而不是
$post['likes']
和$post['comments']
,它应该是$post['likes']['data']
和$post['comments']['data']
代码正在运行,但现在问题是:1.它列出了三篇文章,而页面只有两篇。另外一个帖子显示为0个喜欢,0个分享,0个评论。不知道它是从哪里来的。
2.像计数是不正确的。它最多只显示和列出25条喜欢和评论。我试图设置999999的限制,但它显示的最大值为1000。有什么解决办法吗?这两个职位的实际相似人数为24483
3.注释计数不正确。它必须是90,但代码列出25+5=30
4.它不会列出共享帖子的用户的用户名。如果不使用FQL,您可以执行以下操作:
$d2 = strtotime( '- 7 days' );
$result = $facebook->api( $page_id . '/posts?fields=likes,comments,shares&until=' . $d2 );
foreach ( $result['data'] as $post ) {
echo 'Post: ' . $post['id'] . ' Likes: ' . count( $post['likes']['data'] ) . ' Comments: ' . count( $post['comments']['data'] ) . ' Shares: ' . $post['shares']['count'] . '<br/>';
}
使用limit=2运行177526890164页(Narendra Modi)的上述代码将返回以下结果。如果您看到空白页或错误,那么您显然做错了:
最好的测试方法是进行API调用,然后在调用后添加print\r($result)
,查看Facebook是否返回任何数据。如果为空,则表明您的API调用有问题。谢谢Shah先生。。。当我在没有循环的情况下运行第一个代码来循环post_id时,它不起作用,然后我在图形浏览器中发现“共享”字段不存在。。。相反,它的sharedposts仍然不起作用。是因为应用程序太旧了吗?我需要为此制作一个新的应用程序吗?我是否可以请您调查这个问题,以及您是否可以使用实时post id为“0123456789”的实际代码解码您的示例谢谢共享不会总是出现在数据中(如果没有共享),因此您应该始终先检查它是否存在(例如isset($post['shares'))。你也应该对喜欢和评论做同样的处理。举个例子。它有27个喜欢,2个评论和3个共享。同样对于上面的代码,我使用了纳伦德拉·莫迪的页面(页面id=177526890164),因为它是一个有很多喜欢、共享和评论的页面,但它仍然不起作用……(使用Facebook图形浏览器()我正确地看到了共享。如果您看到sharedposts
,请相应地修改您的代码。我不知道我做错了什么,但它没有任何回应。它给出了一个空白页。现在我正在查看cadburydairymilkindia页(id=104105339655077)和过去30天的帖子。当我查看页面时,我看到有两篇帖子,总共有201+225=426条喜欢,25+7=32条评论和17+6=23条共享。但是当我尝试使用上述代码获取此计数时,它只是没有任何回显。你能在最后检查一下并尝试通过代码获取计数吗?我请求你在他回答我好让我看看。谢谢
$d2 = strtotime( '- 7 days' );
$result = $facebook->api( $page_id . '/posts?fields=likes,comments,shares&until=' . $d2 );
foreach ( $result['data'] as $post ) {
echo 'Post: ' . $post['id'] . ' Likes: ' . count( $post['likes']['data'] ) . ' Comments: ' . count( $post['comments']['data'] ) . ' Shares: ' . $post['shares']['count'] . '<br/>';
}
// main loop to cycle through posts
foreach ( $result['data'] as $post ) {
// inner loop to cycle through likes
foreach ( $post['likes'] as $like ) {
echo 'User: ' . $like['id'] . ' Name: ' . $like['name'];
// code to check / update db here
}
}