Facebookプログラミングなどについて、今日調べたこと

http://developers.facebook.com/docs/samples/からサンプルをダウンロードして動かしてみる。
Social Plugins(winefriends)は、htmlにLogin/Activity/Recommendation/Like/Commentを組み込む例。

Canvas(Run with Friends)は、Google App Engine 上で動くPythonアプリケーション。UbuntuVM上で動かしてみる。http://www.vmware.com/appliances/directory/cat/508からUbuntu 10.10 Gnome desktopをダウンロードする。デフォルトでNumLockがかかっていて、面喰ったが、タイムゾーンJST-9に修正し、時刻も手で直す。SSHでログインできるように、sudo aptitude install sshSSHをインストール。PHPのサンプルも動かしたいので、先にApachePHPをインストールする。sudo apt-get install apache2 でApacheをインストール。sudo apt-get install php5 でPHP5.3.3をインストール。phpinfoが実行されることを確認。

いよいよ、Google App Engine のインストール。まずは、sudo apt-get install python2.5でPython 2.5をインストール。

そうすると、Package 'python2.5' has no installation candidateというエラーになるので、aptの設定ファイルに設定を以下のように変更する。

$ sudo vi /etc/apt/sources.list

deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main
deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main

そして、再度apt-getでPython2.5をインストールする。

$ sudo apt-get update
$ sudo apt-get install python2.5

Python 2.5がインストールされたら、Google App Engineをインストールする。

$ wget http://googleappengine.googlecode.com/files/google_appengine_1.4.3.zip
$ unzip google_appengine_1.4.3.zip
$ cd google_appengine

HelloWorldアプリケーションを作成して、動作確認を行う。
$ mkdir helloworld
$ cd helloworld

$ vi helloworld.py
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

$ vi app.yaml
application: helloworld
version: 1
runtime: python
api_version: 1

handlers:

  • url: /.*

script: helloworld.py

google_appengineディレクトリに戻って、HelloWorldアプリケーションを起動する。

$ cd ..
$ python2.5 ./dev_appserver.py helloworld/

Webブラウザhttp://localhost:8080/にアクセスし、Hello, world!と表示されたら、成功。なお、ローカルホスト以外からのGoogle App Engineへの接続は行えないようになっている。--address=0.0.0.0を指定すれば、ネットワーク上のどのましんからもアクセスが行えるようになる。

$ python2.5 ./dev_appserver.py --address=0.0.0.0 helloworld/

いよいよ、Canvas(Run with Friends)のインストール。

google_appengineディレクトリにCanvas(Run with Friends)用のディレクトリを作成する。curlがインストールされていなかったので、sudo apt-get install curlcurlをインスールしてから、サンプルのソースコードをダウンロードし、展開する。

$ mkdir runwithfriends
$ cd runwithfriends
$ curl -L http://github.com/facebook/runwithfriends/tarball/master | tar xzvf - --strip-components=1

conf.py.exampleをコピーして、conf.pyを作成し、FACEBOOK_APP_ID、FACEBOOK_APP_SECRET、ADMIN_USER_IDSを設定する。Real-time API用に、どのような設定が必要かは、よくわからない。EXTERNAL_HREFに対して、Facebookのサーバからアクセスが発生するので、グローバルにアクセス可能なURLを設定しないと駄目なようだ。

$ cp conf.py.example conf.py
$ vi conf.py

設定がすんだら、runwithfriendsを起動する。

$ python2.5 ../dev_appserver.py --address=0.0.0.0 .

アプリケーションのWeb Site URLとCanvasのURLにrunwithfriendsのURLをセットしたら、統合されているかのテストを行うことができる。


Insights(Export Insights Data)は、PHPで動くサンプルと、Google App Engine 上で動くPythonのサンプル。CSVでInsightデータをダウンロードする。PHP版は、RedirectionException が発生して動かない。Python版は、No ssl package foundでサーバ自体が起動しない。

ssl 1.15をダウンロードして、インストールする。
$ wget http://pypi.python.org/packages/source/s/ssl/ssl-1.15.tar.gz
$ tar xvzf ssl-1.15.tar.gz
$ cd ssl-1.15
$ sudo python2.5 setup.py install

SSLのライブラリがなかったので、インストール。
$ sudo apt-get install libssl-dev

Python.hがなかったので、インストール
$ sudo apt-get install python2.5-dev

今度は、bluetooth/bluetooth.hがない。
$ sudo apt-get install libbluetooth-dev

AppConfigがみつからないというエラーだったから、app.yaml.sampleをもとにapp.yamlを作らないといけなかった。

やっと動いたと思ったら、
Missing redirect_uri parameter.が返ってきた。
確かにコードのどこを見ても、redirect_uriはセットしていない。サンプルとサーバのAPIとの間で整合性が取れていない模様。

Credits Sample Appは、Facebook Creditsの設定を行っていないので、下記のようなエラーとなる。

API Error Code: 1151
API Error Description: Application is not enabled for using Facebook Credits.
Error Message: Invalid Application