我在 Facebook 上有页面,我想在我网站的页面上显示来自我的提要/墙的最新 5 篇帖子。这个怎么做?我找到了这个解决方案..很容易
https://developers.facebook.com/docs/reference/plugins/like-box/
有人指导我使用facebook api并自己做最好的方法是什么?
我使用 php mysql 来建立这个网站
我在 Facebook 上有页面,我想在我网站的页面上显示来自我的提要/墙的最新 5 篇帖子。这个怎么做?我找到了这个解决方案..很容易
https://developers.facebook.com/docs/reference/plugins/like-box/
有人指导我使用facebook api并自己做最好的方法是什么?
我使用 php mysql 来建立这个网站
这是PHP代码。您需要将其放置在您的模板中。
<ul>
<?php
//function to retrieve posts from facebook’s server
function loadFB($fbID){
$url = "http://graph.facebook.com/".$fbID."/feed?limit=3";
// Update by MC Vooges 11jun 2014: Access token is now required:
$url.= '&access_token=YOUR_TOKEN|YOUR_ACCESS_SECRET';// *
//load and setup CURL
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
//get data from facebook and decode JSON
$page = json_decode(curl_exec($c));
//close the connection
curl_close($c);
//return the data as an object
return $page->data;
}
/* Change These Values */
// Your Facebook ID
$fbid = "190506416472588";
// How many posts to show?
$fbLimit = 10;
// Your Timezone
date_default_timezone_set("America/Chicago");
/* Dont Change */
// Variable used to count how many we’ve loaded
$fbCount = 0;
// Call the function and get the posts from facebook
$myPosts = loadFB($fbid);
//loop through all the posts we got from facebook
foreach($myPosts as $dPost){
//only show posts that are posted by the page admin
if($dPost->from->id==$fbid){
//get the post date / time and convert to unix time
$dTime = strtotime($dPost->created_time);
//format the date / time into something human readable
//if you want it formatted differently look up the php date function
$myTime=date("M d Y h:ia",$dTime);
?>
<ul>
<li><?php echo($dPost->message) . $myTime; ?></li>
</ul>
<?php
//increment counter
$fbCount++;
//if we’ve outputted the number set above in fblimit we’re done
if($fbCount >= $fbLimit) break;
}
}
?>
</ul>
编写此脚本必须做两件事。
确保您的服务器启用了 cURL
您将自己更改脚本中的 Facebook ID。
* 您可以通过以下方式获取访问令牌:
$token = 'https://graph.facebook.com/oauth/access_token?client_id='.APP_ID.'&client_secret='.APP_SECRET.'&grant_type=client_credentials';
$token = file_get_contents($token); // returns 'accesstoken=APP_TOKEN|APP_SECRET'
对 api使用多态查询,从 facebook 帐户请求墙内容
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
));
$fbApiGetPosts = $facebook->api('/YOUR_FACEBOOK_ACCOUNT_ID/feed?limit=5');
if (isset($fbApiGetPosts["data"]) && !empty($fbApiGetPosts["data"])) {
// display contents of $fbApiGetPosts["data"] array
}
将 YOUR_APP_ID 替换为您的应用 ID,将 YOUR_APP_SECRET 替换为您的应用密码,将 YOUR_FACEBOOK_ACCOUNT_ID 替换为您想要从中获取帖子的目标 Facebook 帐户。
多态查询基本上是路径/URL。前面提到的 facebook api参考文档中的更多信息。
如果您的目标 Facebook 帐户墙是公开的,那么您将不需要其他任何东西来查看它们。
我在这里遇到了 Okky 的答案,我找到了一个可能的,虽然不是理想的解决方法。
使用 Facebook 墙的 RSS 提要,然后使用您选择的 RSS 阅读器简单地解析它。
https://www.facebook.com/feeds/page.php?format=rss20&id=YOUR_UNIQUE_ID
因此,为了混合 Okky 和 Deele 的答案,这两者都对我有帮助,你必须以看起来像这样的东西结束。我还添加了一个锚标记来链接到帖子网址:
<?php
$fbApiGetPosts = $facebook->api('/YOUR_FACEBOOK_ACCOUNT_ID/feed?limit=5');
if (isset($fbApiGetPosts["data"]) && !empty($fbApiGetPosts["data"])) {
//loop through all the posts we got from facebook
foreach($fbApiGetPosts["data"] as $dPost){
//only show posts that are posted by the page admin
if($dPost["from"]["id"]==$fbid){
//get the post date / time and convert to unix time
$dTime = strtotime($dPost["created_time"]);
//format the date / time into something human readable
//if you want it formatted differently look up the php date function
$myTime=date("M d Y h:ia",$dTime);
?>
<li><a href="<?php echo($dPost["link"]); ?>">
<?php echo($dPost["message"]) . "<br>" .
$myTime; ?></a></li>
<?php
}
}
}
?>