刚刚更新了下面的一些代码!
fanpage.php
class fanpage {
public $fan_ID;
public $info;
function __construct($fan_ID = null) {
$this->fan_ID = $fan_ID;
$this->info = json_decode(file_get_contents('http://graph.facebook.com/' . $fan_ID));
}
function fan_count() {
return $info->likes;
}
function fan_name() {
return $info->name;
}
}
page.php
<?php
include('fanpage.php');
$fp = new fanpage(PAGE_ID);
?>
<div style="width:100px; height:100px; border:1px solid black;">
Facebook Logo
</div>
<div class="fb_stats" id="fb_name">
<?php echo $fp->fan_name()?>
</div>
<div class="fb_stats" id="fb_likes">
<?php echo $fp->fan_count()?>
</div>
<script type="text/javascript>
var delay = 10000; //10000 = 10 seconds
var fbint = window.setInterval(checkFacebook, delay);
function checkFacebook(){
$.getJSON('checkFacebook.php?callback=?', {fan_ID: '$fan_ID'}, function(rs){
if (rs.name) $('#fb_name').text(rs.name);
if (rs.likes) $('#fb_likes').text(rs.likes);
});
}
</script>
checkFacebook.php
include('fanpage.php');
$fan_ID = (int) $_GET['fan_ID'];
$fp = new fanpage($fan_ID);
$data = (object) array('likes' => $fb->likes, 'name' => $fb->name); //sloppy object
$callback = $_GET['callback']; //sanitize this
print $callback . '(' . json_encode($data) . ')';
exit;
下面的旧东西
你熟悉很多JavaScript或jQuery吗?这里有一个简短的jQuery示例,应该可以很好地工作。
page.php
<script type="text/javascript>
var delay = 10000; //10000 = 10 seconds
var fbint = window.setInterval(checkFacebook, delay);
function checkFacebook(){
$.getJSON('checkFacebook.php?callback=?', function(rs){
if (rs.name) $('#fb_name').text(rs.name);
if (rs.likes) $('#fb_likes').text(rs.likes);
});
}
</script>
checkFacebook.phpnamelikescheckFacebook.php
//do all your normal config stuff here
$info = json_decode(file_get_contents('http://graph.facebook.com/' . $fan_ID));
$data = (object) array('likes' => $info->likes, 'name' => $info->name); //sloppy object
$callback = $_GET['callback']; //sanitize this
print $callback . '(' . json_encode($data) . ')';
exit;
还有一件事!顶层的函数工作得很好,但是两次发送完全相同的请求是在浪费大量时间。您可以从同一位置提取这两部分信息,那么为什么不这样做呢?
<?php
class fanpage {
public $fan_ID;
public $info;
function __construct($fan_ID = null) {
$this->fan_ID = $fan_ID;
$this->info = json_decode(file_get_contents('http://graph.facebook.com/' . $fan_ID));
}
function fan_count() {
return $info->likes;
}
function fan_name() {
return $info->name;
}
}
$fp = new fanpage(PAGE_ID);
?>
<div style="width:100px; height:100px; border:1px solid black;">
Facebook Logo
</div>
<div class="fb_stats" id="fb_name">
<?php echo $fp->fan_name()?>
</div>
<div class="fb_stats" id="fb_likes">
<?php echo $fp->fan_count()?>
</div>
这样,您的服务器就不必调用Facebook来两次请求相同的信息:)