2014-10-03 52 views
1

我想從fb獲取最新帖子並需要在我的網站(magento)上顯示。我在Facebook上registerd一個應用程序,並嘗試通過使用URL獲得職位,但它給空數組使用圖表API從fb獲取最新帖子

require_once(Mage::getBaseDir('lib') . '/facebook/facebook.php'); 
    $facebook = new Facebook(array(
       'appId' => 'xxxxxxxxxxxx', 
       'secret' => 'xxxxxxxxxxxxxxxxxxxx', 
      )); 
    $fbid = "xxxxxxxxxx"; 
    $secret = "xxxxxxxxxxxxxxxxxxxxxxx"; 
    $token = 'https://graph.facebook.com/oauth/access_token?client_id='.$fbid.'&client_secret='.$secret.'&grant_type=client_credentials'; 
    $token = file_get_contents($token); 
    $posts = json_decode(
       file_get_contents('https://graph.facebook.com/' . $fbid . '/feed? 
        access_token=' . $token 
       ) 
      ); 

但它給一個空數組,你可以幫助我得到的結果,爲什麼它給空?

回答

1

爲了閱讀來自Facebook的Feed,您必須將用戶登錄到Facebook並詢問用戶read_stream的權限。

進料將在登錄用戶的飼料,如果你有一個有效的訪問令牌可能不適合您的網站的所有用戶,除非你的網站的每個用戶看到自己的飼料......

0

,您可以使用php圖形API從任何公共頁面獲取提要。您可以使用file_get_contents或curl方法調用api。

function curl_get_file_contents($URL) { 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); 
$contents = curl_exec($ch); 
$err = curl_getinfo($ch,CURLINFO_HTTP_CODE); 
curl_close($ch); 
$contents=json_decode($contents,true); 
if ($contents) return $contents; 
else return FALSE; 
} 

$access_token = 'your accesstoken'; 
$url = " https://graph.facebook.com/$page_id/feed?access_token=$access_token"; 
$posts = curl_get_file_contents($url); 

現在$帖子將從頁面中獲得所有最新帖子,您可以使用foreach獲取每個帖子。

0
  1. 創建應用程序Developer Facebook Page

您可以通過圖表獲取Live Access令牌。然後代碼例如:

<ul> 
<?php 

$page_name = '{PAGE_NAME}'; // Example: http://facebook.com/{PAGE_NAME} 
$page_id = '{PAGE_ID}'; // can get form Facebook page settings 
$app_id = '{APP_ID}'; // can get form Developer Facebook Page 
$app_secret = '{APP_SECRET}'; // can get form Developer Facebook Page 
$limit = 5; 

function load_face_posts($page_id, $page_name, $app_id, $app_secret, $limit, $message_len) { 
    $access_token = "https://graph.facebook.com/oauth/access_token?client_id=$app_id&client_secret=$app_secret&grant_type=client_credentials"; 
    $access_token = file_get_contents($access_token); // returns 'accesstoken=APP_TOKEN|APP_SECRET' 
    $access_token = str_replace('access_token=', '', $access_token); 
    $limit = 5; 
    $data = file_get_contents("https://graph.facebook.com/$page_name/posts?limit=$limit&access_token=$access_token"); 
    $data = json_decode($data, true); 
    $posts = $data[data]; 
    //echo sizeof($posts); 

    for($i=0; $i<sizeof($posts); $i++) { 
     //echo $posts[$i][id]; 
     $link_id = str_replace($page_id."_", '', $posts[$i][id]); 
     $message = $posts[$i][message]; 

     echo ($i+1).". <a target='_blank' href='https://www.facebook.com/AqualinkMMC/posts/".$link_id."'>".$message."</a><br>"; 
    } 
} 

load_face_posts($page_id, $page_name, $app_id, $app_secret, $limit, $message_len); 
?> 
</ul> 
相關問題