2012-05-21 66 views
0

我在嘗試讓一些PHP代碼與Facebook提供的Open Graph API一起工作時遇到了一些問題。Facebook Graph API身份驗證評論計數? (想想我錯過了什麼。)

我有一些PHP代碼需要一個url,並返回使用Facebook Comments插件製作的頁面上的評論數量。

我知道代碼的作品,但是,有一個小問題。

當我嘗試我的代碼時,它不顯示任何信息。當我登錄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會顯示正確的信息。一個訪問令牌可以包含在這個地方,還是有我失蹤的東西?

+0

只是爲了澄清,我用我的網站上的PHP訪問同一站點圖信息。這應該不需要任何人授權。如果有一些我可以做的一次性授權,那很好。 –

+0

您可以分享鏈接或致電您正在製作的API資源管理器。 – pal4life

+0

我在API Explorer中檢查的URL是「https://graph.facebook.com/?ids=http://news.essentialtransit.com/2012020434-St.+John-27s+preps+plans+for+- 2410M + windfall.html「當我在列表中選擇我的應用程序時,它會更改使用的訪問令牌。它也在迴應中說:''評論':1,'。這是我需要我的腳本能夠訪問的信息,但不包括訪問代碼,不知何故,此信息不可用。 –

回答

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/

+0

我不確定這是不是Facebook過時了FBML或FQL? – pal4life

+0

對於一些較舊的Facebook文檔,頂部有一個通知,表示它將被折舊,或將在未來折舊。但是,在FQL文檔頁面上沒有這樣的信息,所以我希望這不是他們計劃在不久後結束的事情。 –

+0

fb是貶低公衆訪問,所以這是一個很好的方式去(閱讀:未來的訪問可能需要appid。) –

1

您需要一個訪問令牌來查詢此數據。

但是,不要要求用戶進行身份驗證,您可以使用應用程序訪問令牌。

瞭解如何生成一個位置:http://developers.facebook.com/docs/authentication/applications/

+0

謝謝,我錯過了這個頁面時,我正在看事情。我決定使用FQL方法來獲取我正在尋找的數據。但是,我打算爲您的答案投票,因爲這些信息很有用。 –

相關問題