SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Perl Tips

Perlで始めるFacebookアプリケーション

Perlで作るFacebook用Webアプリケーションの第一歩

  • X ポスト
  • このエントリーをはてなブックマークに追加

サンプルアプリケーションの作成

 さて、簡単に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 URLFacebook内で固有のURLを入力します。好きな名称で結構です(例:foobar)。その下のラジオボタンは[User FBML]を選択してください。
Application TypeWebsiteを選択してください。
Can your application be added on Facebook?Yesを選択してください。
Post-Add URLCanvas 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]をクリックします。

Facebookメニュー
Facebookメニュー

 すると、次のページが表示されるので、[info]というリンクをクリックします。

最初の画面
最初の画面

 Dumpした内容が出てくれば成功です。

infoページの画面
infoページの画面

 次のようなページが出てきた場合、パーミッションやパスが正しくないことがありますので、見直してみてください。

エラーページ
エラーページ

 ちなみに、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 BoardIRC channelがありますので活用してみてはいかがでしょうか。アプリケーションのスキルだけでなく英語のスキルも獲得できるチャンスかもしれませんね。;-)

 また、Ruby on Railsを利用した例などもありますので、開発者向けWikiページを散策すると意外な発見に出会えます。

 最後に、Perlに関する記述がWikiにありましたので紹介しておきます。

まとめ

 駆け足での説明になってしまいましたが、いかがだったでしょうか? Facebookの開発者向けページではより多くの情報が公開されています。本稿に出てきていない内容もありますので参考にしてください。かなりいろいろなことができると思いますので、ぜひ皆さんもFacebookアプリケーションに挑戦してみてください。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Perl Tips連載記事一覧

もっと読む

この記事の著者

重田 崇嗣(シゲタ タカツグ)

1974年神奈川県生まれ。2006年からシックス・アパート株式会社に勤務。ブログ・サービスTypePadの開発を担当。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1790 2007/10/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング