サンプルアプリケーションの作成
さて、簡単にFacebookの基本機能について理解したところで、サンプルアプリケーションの作成に入りたいと思います。
Facebookではアプリケーション作成のガイドとして、「Step-by-step PHP introduction to creating apps with canvas pages and profile boxes」というドキュメントを用意しています。この手順に従うとアプリケーションの作り方が分かりますので、本稿でもこの流れに沿って説明します。
ただし、このドキュメントではPHPのサンプルを紹介しておりますが、今回はPerlを使います。利用するCPANモジュールはWWW::Facebook::API
です。Facebookに登録するアプリケーションはNet::Facebook::API
に付属しているfacebook-canvas-jsonを使います。
開発用のアプリケーションの登録
まずは、開発用のアプリケーションを自分のアカウントに追加するところからはじめます。
「Get Started」ページにアクセスして、[Add Facebook Developer Application]をクリックしてください。これで開発用のアプリケーションを追加できます。
新しいアプリケーションの登録
「Developers」のページ右上にある[Set Up New Application]ボタンをクリックし、ここで追加するアプリケーションの情報を入力します。Step-by-step ガイドを参考に入力していきます。上から順番に説明します(特に記述のない項目は何も入力しなくて結構です)。
項目 | 説明 |
Application Name | 適当な名前を付けてください(例:Net::Facebook::API example)。 「Check here to indicate that you have read and agree to the terms of the Facebook Platform.」はチェックを入れてください。 Optional Fieldsをクリックし、さらに詳細を入力をします。 |
Support E-mail | 既に入力されていると思いますが、追加するアプリケーションをサポートするためのコンタクト用メールアドレスです。 |
Callback Url | ここにはFacebookのサーバが呼び出すURLを記入します。つまり追加するアプリケーションのURLです(例:http://example.com/cgi-bin/example.cgi/)。 |
Canvas Page URL | Facebook内で固有のURLを入力します。好きな名称で結構です(例:foobar)。その下のラジオボタンは[User FBML]を選択してください。 |
Application Type | Websiteを選択してください。 |
Can your application be added on Facebook? | Yesを選択してください。 |
Post-Add URL | Canvas Page URLを入力します(例:http://apps.faecbook.com/foobar)。 |
Developer Mode | チェックを入れてください。 |
これで[Submit]ボタンを押すと、アプリケーションが登録されます。
自分のアプリケーションの設定
今回はNet::Facebook::API
に付属しているfacebook-canvas-jsonを使います。まずは自分のサーバに設置しますが、このとき上記のCallback URLで記載したURLに正しく設置してください。
今回の例では次のようにしました。分かりやすいように、「facebook-canvas-json」を「example.cgi」にリネームしています。
% cd cgi-bin % wget http://search.cpan.org/src/UNOBE/WWW-Facebook-API-v0.4.7/ examples/facebook-canvas-json % mv facebook-canvas-json example.cgi % chmod 755 example.cgi
次にデフォルトでは次のようになっていますので、それぞれ変更をします。
my $facebook = WWW::Facebook::API->new( api_key => "change-me", # change-meの代わりにAPI Keyを入力 secret => "change-me", # change-meの代わりにSecretを入力 app_path => "change-me", # change-meの代わりにCanvas Page URLを入力 parse => 1, );
設置するサーバによってはroot権限がなく、Net::Facebook::API
のパスが異なる場合は、次のようなコードを「example.cgi」に追加してください。
use lib qw(/home/youraccount/local/lib/perl5);
アクセスしてみる
これで準備は整いました。早速アクセスしてみましょう。メニューから[Net::Facebook::API example]をクリックします。
すると、次のページが表示されるので、[info]というリンクをクリックします。
Dumpした内容が出てくれば成功です。
次のようなページが出てきた場合、パーミッションやパスが正しくないことがありますので、見直してみてください。
ちなみに、Facebookからでなくブラウザから直接Callback URLにアクセスすると、次のページが表示されます。
サンプルスクリプト「example.cgi(facebook-canvas-json)」の解説
ここからは、『自分のアプリケーションの設定』で設置したサンプルスクリプト「example.cgi」について説明します。
34-35行目で、Facebookから直接呼び出されたのかどうかをパラメータで判断し、FALSEの場合は上記のエラーページを表示します。
34 redirect("Must be called in facebook canvas") 35 unless $facebook->canvas->in_fb_canvas($q);
正しくFacebookから呼び出された場合は、index_page
メソッドを実行します。ここではサンプルということもあり、FBMLやFQLを利用してユーザー名などを取得しています。
70 my $res = 71 $facebook->fql->query( query => 72 "SELECT first_name FROM user WHERE uid=$params->{user}" ); 73 $name = "Hi $res->[0]->{first_name}, you";
続いてinfoページへのリンクを作っているところを見てください。
75 print "$name ", ( $params ? "have" : "have't" ), 76 " added this application. Some <a href='info'>info</a>.";
href
がinfoになっています。例えば、Callback URLを「http://example.com/cgi-bin/example.cgi/」に設定した場合は、このリンクをクリックすると「http://example.com/cgi-bin/example.cgi/info」が呼ばれます。
このサンプルでは下記のように「example.cgi/info」と呼ばれた場合、info_page
メソッドを実行するようにしています。
23 our %action_map = ( 24 '' => \&index_page, 25 info => \&info_page, 26 ); 50 my ( $action, $param ) = ( $q->path_info =~ m!^/(\w+)/?(.*)! ); 51 if ( my $s = $action_map{$action} ) { 52 $s->( $param, $params ); 53 }
info_page
メソッドは、Facebookから渡されたパラメータのDumpを表示するだけのメソッドのため、前述の画像のようなDumpが表示されるわけです。
87 print "<fb:header/><div style='padding: 20px'><pre>"; 88 print Dumper($params); 89 print "</pre></div>";
サポート
これだけ強力なプラットフォームを提供してくれるFacebookですが、Facebookは米国のサービスなので基本的に英語の情報しかありません。オフィシャルなサポートとして、Discussion BoardやIRC channelがありますので活用してみてはいかがでしょうか。アプリケーションのスキルだけでなく英語のスキルも獲得できるチャンスかもしれませんね。;-)
また、Ruby on Railsを利用した例などもありますので、開発者向けWikiページを散策すると意外な発見に出会えます。
最後に、Perlに関する記述がWikiにありましたので紹介しておきます。
まとめ
駆け足での説明になってしまいましたが、いかがだったでしょうか? Facebookの開発者向けページではより多くの情報が公開されています。本稿に出てきていない内容もありますので参考にしてください。かなりいろいろなことができると思いますので、ぜひ皆さんもFacebookアプリケーションに挑戦してみてください。