用于评论计数的Facebook Graph API身份验证? (想想我错过了什么。)

时间:2012-05-21 19:43:20

标签: php facebook opengraph

我在试图获取一些PHP代码以使用Facebook提供的Open Graph API时遇到了一些问题。

我有一些PHP代码,它接受一个url并返回该页面上使用Facebook Comments插件制作的评论数量。

我知道代码有效,但是,存在一个小问题。

当我尝试使用我的代码时,它不会显示任何信息。当我签入Facebook提供的API Explorer时,我想要的信息就在那里。唯一的区别是,在使用API​​资源管理器时,正在使用访问令牌。

我正在运行的代码试图获取同一域上页面的Graph数据。这不是要求此人授权我们的应用程序的东西,因为要求授权只是告诉某人在页面上做了多少评论是没有意义的。

所以我的问题是,如何在下面的代码中包含访问令牌:

function fb_comment_count($url = '') {
$filecontent = file_get_contents('https://graph.facebook.com/?ids=' . $url);
$json = json_decode($filecontent);
$count = $json->$url->comments;
if ($count == 0 || !isset($count)) {
    $count = 0;
}
echo $count;
}

目前唯一的问题是这个 https://graph.facebook.com/?ids='。 $ url 它返回空,但是当我使用相同的URL时,API Explorer会显示正确的信息。可以在某个地方包含访问令牌,还是有些东西我不知道?

2 个答案:

答案 0 :(得分:1)

我实际上最终使用了这段代码,这使我得到的不仅仅是评论计数(它使用Facebook PHP SDK):

<?php
// Stats taken from link_stats table
// Documentation: http://developers.facebook.com/docs/reference/fql/link_stat/
function FBLinkStats($url,$type){

$fbconfig['appid' ]  = "###########";
$fbconfig['secret']  = "###########";
include_once "facebook.php";

$facebook = new Facebook(array(
    'appId'  => $fbconfig['appid' ],
    'secret' => $fbconfig['secret'],
    'cookie' => true
));

$fql = "SELECT url, normalized_url, share_count, like_count, comment_count, total_count, commentsbox_count, comments_fbid, click_count FROM link_stat WHERE url = '".$url."' ";
$param  =   array(
    'method'    => 'fql.query',
    'query'     => $fql,
    'callback'  => ''
);
$fqlResult   =   $facebook->api($param);
return $fqlResult[0][$type];
}
?>

该函数有两个变量,即您要获取信息的页面的URL,以及您想要返回的统计信息,可在此页面上找到:http://developers.facebook.com/docs/reference/fql/link_stat/

答案 1 :(得分:1)

您需要一个访问令牌来查询此数据。

但是,您可以使用应用访问令牌,而不是要求用户进行身份验证。

了解如何在此处生成一个:http://developers.facebook.com/docs/authentication/applications/