PHPで「いいね!」してくれたファンを振り分ける
Facebookページの「いいね!」を促進する仕組みとして、「ファンゲート」があります。ファンゲートとは、「いいね!」してくれたファンだけが見られるページのことで、プレゼントの申し込みフォームやクーポンコードといった特典を用意する企業が多いようです。たとえば、レノボ・ジャパンのFacebookページは以下のようなファンゲートを実装しています。
![]() |
|---|
| レノボ・ジャパンのファンゲート。ファンにだけクーポンコードを表示する仕組みを実装している |
今回は、Web Professionalのプレゼントページを改造し、「いいね!」してくれたファンにだけ応募フォームを表示するようにしましょう。
![]() |
|---|
| プレゼントページ。ファンだけが応募できるように、「いいね!」をクリックしたユーザーにのみフォームを表示する |
Web Professionalのプレゼントページは前回の「iframeを使ったウェルカムページ」と同じ方法で作成しています。
まず、プレゼントページのアプリの設定画面で「アプリの秘訣」(英語ではApp Secret)コードを控えておきます。
![]() |
|---|
| アプリの秘訣(App Secret)を控えておく |
次に、ファンとファン以外で異なるコンテンツを表示するために、4つのファイルを用意します。
- signed_request.php
- ユーザーが「いいね!」してくれているかを判断するプログラム
- index.php
- signed_request.phpの結果を受けてユーザーを振り分けるプログラム
- fan.html
- 「いいね!」してくれているファンにだけ表示するページ
- not_fan.html
- ファンでないユーザーに対して「いいね!」するように促すページ
Facebookページを訪れたユーザーがファンか否かは、Facebookが開発者向けに公開しているコードを利用します。
以下のPHPのコードを「signed_request.php」として保存します。
<?php function parse_signed_request($signed_request, $secret) { list($encoded_sig, $payload) = explode('.', $signed_request, 2); // decode the data $sig = base64_url_decode($encoded_sig); $data = json_decode(base64_url_decode($payload), true); if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { error_log('Unknown algorithm. Expected HMAC-SHA256'); return null; } // check sig $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); if ($sig !== $expected_sig) { error_log('Bad Signed JSON signature!'); return null; } return $data; } function base64_url_decode($input) { return base64_decode(strtr($input, '-_', '+/')); } ?>
続いて、「index.php」を用意します。index.phpは、ユーザーがプレゼントページにアクセスしたときに最初に読み込まれるファイルです。index.phpにインクルードされた「signed_request.php」の実行結果を受けて、ファンとファン以外に対して表示するコンテンツを出し分けます。
<?php include_once('signed_request.php'); if ( isset($_POST['signed_request']) ) { $fb_data = parse_signed_request($_POST['signed_request'], 'アプリの秘訣'); if( $fb_data['page']['liked'] ){ include_once('fan.html'); } else { include_once('not_fan.html'); } } ?>
コード内にある「アプリの秘訣」には、前に控えておいた「アプリの秘訣」(App Secret)コードを入れてください。アプリの秘訣コードを入力することでFacebookから正しいユーザー情報を受け取れます。
if( $fb_data['page']['liked'] ){
include_once('fan.html');
ここでは、「いいね!」してくれているファンに対する処理を記述します。今回は「fan.html」を表示させています。
} else {
include_once('not_fan.html');
}
ここでは、まだ「いいね!」してくれていないファン以外に対する処理を記述します。今回は「not_fan.html」を表示させています。
![]() |
|---|
| 「いいね!」をクリックしていないユーザーの場合にはファン以外向けのコンテンツを表示する |
なお、PHPで読み込むコンテンツ(fan.html/not_fan.html)の高さが800pxを超える場合は、スクロールバーが表示されます。スクロールバーの表示を回避するには、index.phpにJavaScript SDKを読み込み、JavaScriptでiframeの高さ(キャンバスサイズ)を変更する必要があります。前のページの解説を参考に設定してください。
作成したファイルをFTPなどでWebサーバーにアップロードし、前回説明した方法でiframeアプリとして登録するとファンゲートの完成です。一度「いいね!」を外して表示の違いを確認してみてください(もう1度「いいね!」するのを忘れないでくださいね)。
◆
いかがだったでしょうか。今回は、iframeを使って追加したタブをカスタマイズする方法を紹介しました。JavaScript SDKやPHPが出てきたことで難易度はやや上がってしまいましたが、紹介した方法を使うことでより本格的なFacebookページを作成できます。ぜひ、挑戦してみてください。
著者:加藤 洋(かとう・ひろし)
![]() |
|---|
株式会社TAM アートディレクター兼ソーシャルメディア・プランナー。大手通信会社キャンペーンサイト、国内高級車メーカープロモーションサイト、大手通販会社ECサイトなどを数多くWebプロジェクトを手掛ける。FacebookやTwitterなどソーシャルメディア活用のノウハウ蓄積と情報発信を行なうサイト「Social Media 360.jp[役に立つソーシャルメディア情報配信サイト]」を運営中。
著者:梅田恭子(うめだ・きょうこ)
![]() |
|---|
株式会社TAM マークアップエンジニア。自社サービス、大手消費財メーカーサイト、大手通販会社コミュニティサイト、各種学校紹介サイト、月刊情報誌サイトなど数多くのWebプロジェクトを手掛ける。TAMテクニカルチームがテーマ別の技術グループに分かれて情報発信を行なうサイト「Tips Note」を運営中。
ソーシャルリアクション
この連載の記事
- 第6回 事例に学ぶ!絶対失敗しないFacebookページの作り方
- 第5回 Facebookを盛り上げる効果測定とエッジランクの秘密
- 第4回 保存版!Facebookでファンを獲得する18の鉄則
- 第2回 iframe対応!初めてのFacebookページの作り方
- 第1回 Facebookページの作り方、教えます
- この連載の一覧へ




![[画像:レノボ・ジャパン株式会社] [画像:レノボ・ジャパン株式会社]](/elem/000/000/596/596558/006_400x413.jpg)
![[画像:ASCII.jp Web Professional プレゼント.png] [画像:ASCII.jp Web Professional プレゼント.png]](/elem/000/000/596/596559/007_400x506.jpg)
![[画像:開発者.png] [画像:開発者.png]](/elem/000/000/596/596560/008_400x379.jpg)
![[画像:ASCII.jp Web Professional_いいねまだ.png] [画像:ASCII.jp Web Professional_いいねまだ.png]](/elem/000/000/596/596561/009_400x278.jpg)



















