Facebookページのファンゲートの作り方

Facebookページのファンゲートの作り方

FacebookページのWelcomeページにファンゲートを作ってみたので、その手順のメモです。

最初にアクセスするWelcomeページのindex.phpにて、いいねを押してくれている人は”fan.php”を表示し、まだいいねを押していない人には”not-fan.php”を表示するという分岐をするしくみになっています。

手順

まず”signed_request.php”という名前のファイルを作り、下記のように記入します。
訪問者がファンかファンでないかを判断する処理が書かれています。Facebookでコードが公開されていますのでコピー&ペーストしました。Signed Request – Facebook開発者

<?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には以下のように記入します。

<?php
include ‘signed_request.php';
if (isset($_POST['signed_request']) ) {
$fb_data = parse_signed_request($_POST['signed_request'], ‘アプリの秘訣’);
if ($fb_data) {
if( $fb_data['page']['liked'] ){
//いいねを押している人に表示するページを指定
include ‘fan.php';
}
else {
//いいねを押していない人に表示するページを指定
include ‘not-fan.php';
}
}
}
?>

2行目の”include ‘signed_request.php’;”でsigned_request.phpファイルを読み込んで、いいねを押してくれてる人かそうでないかを判断します。

4行目に出てくる”アプリの秘訣”はFacebookの”Facebook開発者”の右の方にあるコードです。
アプリの秘訣

8行目 のinclude ‘fan.php’;でいいねを押してくれている人は”fan.php”を読み込みます。

12行目のinclude ‘not-fan.php’;でいいねを押していない人は”not-fan.php”を読み込みます。

私はさくらサーバーを使用しているのでfan.phpとphpの拡張子ですが、fan.phpとnot-fan.phpは普通にhtmlで大丈夫です。文字化けしてしまうので、ファイルの文字コードはUTF-8にします。
fan.phpとnot-fan.phpはhtmlでいいね押してくれた人用とそうでない人用のページを作ります。

もっと難しいかと思っていましたが案外サクっとできました。

Related Article

2 Comments & Tracbacks

  • Sashko 2012-01-27 2:40 PM

    色んな意味でもっと簡単な作り方があります。

    http://okwave.jp/qa/q7139291.html

    Reply

    • admin 2012-01-27 3:38 PM

      色んなアプリがあるのですね。作り方も色々ですね。

      Reply

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー jQueryプラグイン スライドショー トラブル コードサンプル 素材 コンテンツ Facebook php 引っ越し お知らせ JavaScript カテゴリー Shareボタン CSS IE 投稿タイプ レスポンシブ Photoshop seo Macアプリ サイドバー タクソノミー HTML5 WPセキュリティ Git カスタムメニュー ナビゲーション PHPリファレンス SVG API query_posts RSS WP使い方 iTunes データベース コメント function 条件分岐 get_posts() スマートフォン Sass/Compass moreタグ