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

Sashko にコメントする コメントをキャンセル

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


*


Categorys

Tags

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