0

我在尝试让一些 PHP 代码与 Facebook 提供的 Open Graph API 一起工作时遇到了一些问题。

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

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

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

我正在运行的代码正在尝试获取同一域上页面的图形数据。这也不需要用户授权我们的应用程序,因为仅仅为了告诉某人在一个页面上发表了多少评论而请求授权是没有意义的。

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

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 会显示正确的信息。可以在某个地方包含访问令牌,还是我缺少什么?

4

2 回答 2

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/

于 2012-05-22T05:04:40.087 回答
1

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

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

在这里查看如何生成一个:http: //developers.facebook.com/docs/authentication/applications/

于 2012-05-22T10:55:53.410 回答