1

Facebook APIを使用するのは初めてですが、簡単なはずだと思う質問があります。

ウェブページを表示する店舗のテレビ画面を設定しています。このページには、ストアのFacebookページの現在の「likecount」を表示します。いいねを表示するように設定する方法は知っていますが、ページ全体を更新せずに、新しいユーザーがページを気に入ったときに番号を自動更新する簡単な方法はありますか。動的に生成されるものを探していると思います。どうすればいいのかわかりません。私は研究を喜んで行います、私はただ正しい方向に向けられる必要があります。

これまでのページの本文のコードは次のとおりです。

<?php
function fan_count($fan_ID) {
$info = json_decode(file_get_contents('http://graph.facebook.com/' . $fan_ID));
echo $info->likes;
}

function fan_name($fan_ID) {
$info = json_decode(file_get_contents('http://graph.facebook.com/' . $fan_ID));
echo $info->name;
}
?>

<div style="width:100px; height:100px; border:1px solid black;">
    Facebook Logo
</div>
<div class="fb_stats" id="fb_name">
    <?php fan_name(PAGE_ID)?>
</div>
<div class="fb_stats" id="fb_likes">
    <?php fan_count(PAGE_ID)?>
</div>

あなたが提供できるどんな助けにも感謝します!

編集

了解しました。以下の回答に従って更新されたコードを次に示します。メインページのPHPを機能させることができません(このビットを正しく設定したら、リロードについて心配します)。単純化のために同様のカウントを取得することを探しているだけで、そこから構築します。これが私のコードです(例として「コカコーラ」を使用しています。バニティURLはFacebookグラフと互換性があります):

<?php
class fanpage {
public $fan_ID;
public $info;

function __construct($fan_ID) {
    $this->fan_ID = $fan_ID;
    $this->info = json_decode(file_get_contents('http://graph.facebook.com/' . $fan_ID));
  }

function fan_count() {
   echo $info->likes;
  }
}

$fp = new fanpage(cocacola);
?>

<div style="width:100px; height:100px; border:1px solid black;">
    Facebook Logo
</div>
<div class="fb_stats" id="fb_likes">
    <?php $fp->fan_count()?>
    <span style="font-size:20px; position:absolute; top:400px;">Total Likes</span>
</div>

$ infoが1つの関数で定義され、別の関数で呼び出されようとしていることと関係があるのでしょうか。助けてくれてありがとう!

4

1 に答える 1

3

以下のコードを更新しました!


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。jQueryを含め、その下にこれを追加します。

<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.phpこれは10秒に1回チェックします。nameまたは属性がlikes返されると、自動的に更新されます。次に、実際にcheckFacebook.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;

もう一つ!上部の関数は正常に機能しますが、まったく同じリクエストを2回送信することで、多くの時間を無駄にしています。同じ場所から両方の情報を引き出すことができるので、代わりにこのようなことをしてみませんか?

<?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>

このように、サーバーは同じ情報を2回要求するためにFacebookを呼び出す必要はありません:)

于 2012-09-29T04:38:18.203 に答える