2011年5月15日日曜日

Mac OS XにRuby 1.9.2とRails 3.0.7をインストール

せっかくAgile Web Development with Rails第4版を予約してまで購入したので、Mac OS XにRuby 1.9.2とRails 3.0.7をインストールします。

Rubyのインストール先:$HOME/opt/ruby-1.9.2-p180
gemファイルの格納先:$HOME/opt/lib/ruby/gems/1.8

Rubyのインストール


$ cd ~/tmp
$ curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2
$ tar jxvf ruby-1.9.2-p180.tar.bz2
$ cd ruby-1.9.2-p180
$ ./configure --prefix=$HOME/opt/ruby-1.9.2-p180
$ make
$ make install
$ ln -s ~/opt/ruby-1.9.2-p180 ~/opt/ruby
$ echo "export PATH=\$HOME/opt/ruby/bin:\$PATH" >> ~/.bashrc
$ source ~/.bashrc

rubygems-updateのインストール

$ mkdir -p ~/opt/lib/ruby/gems/1.8
$ cat >> ~/.bashrc
export GEM_HOME=$HOME/opt/lib/ruby/gems/1.8
export PATH=$HOME/opt/lib/ruby/gems/1.8/bin:$PATH
export RUBYLIB=$RUBYLIB:$HOME/opt/lib/ruby/gems/1.8/lib
$ source ~/.bashrc
$ gem install rubygems-update
$ update_rubygems
$ gem uninstall rubygems-update
あまりよく分かっていないです、update_rubygemsした時点でrubygems-updateに不整合が起きるらしいので、一度アンインストールしています、↓で再度インストールし直しています。

railsのインストール

$ gem install rubygems-update twitter rails sqlite3

確認

$ rails new test_app
$ cd test_app/
$ rails server
http://localhost:3000/にアクセスしてAbout your application’s environmentをクリック

2011年5月14日土曜日

php-sdkを用いてFacebookアプリのテストユーザを作成

* (2011/8/11追記) Webページよりテストユーザを作成するスキームが新たに公開されています。

php-sdkを用いてFacebookアプリのテストユーザを作成します。
環境はZend Frameworkを想定しています。

テストユーザの作成

以下パラメータを指定できます。
  • installed:テストユーザ作成時にテストユーザにアプリをインストールするか否かを指定。デフォルトはtrue
  • permissions:installedがtrueの場合、アプリに承認される権限を指定。

// テストユーザ作成
public function createTestUserAction() {
  $installed = $this->getRequest()->getParam('installed');
  $permissions = $this->getRequest()->getParam('permissions');
  $paramAry = array(
    'access_token' => $this->getAppAccessToken(),
    'installed' => empty($installed) ? 'true' : $installed,
    'permissions' => empty($permissions) ? 'read_stream,publish_stream' : $permissions
    );
  print_r($this->fb->api("/{$this->_fbAppId}/accounts/test-users", "POST", $paramAry));
}
例えば以下URLでread_stream、publish_stream、emailの権限が承認されたテストユーザを作成します。
/<コントローラ名>/create-test-user?permissions=read_stream,publish_stream,email
login_urlが出力されるので、このURLを用いてテストユーザにアクセスできます。
login_urlは1時間で無効になります。

テストユーザの表示

// テストユーザ一覧表示
public function viewTestUsersAction() {
  $tokenUrl = "/{$this->_fbAppId}/accounts/test-users?{$this->getAppAccessToken()}";
  print_r($this->fb->api($tokenUrl));
}
アプリに対し作成済みのテストユーザ一覧を表示します。
/<コントローラ名>/view-test-users
出力されるlogin_urlは10分で無効になります。

テストユーザの削除

// テストユーザ削除
public function deleteTestUserAction() {
  $userId = $this->getRequest()->getParam('user-id');
  $paramAry = array('access_token' => $this->getAppAccessToken());
  $this->fb->api("/{$userId}", "DELETE", $paramAry);
}

※アプリのaccess_token取得用関数
private function getAppAccessToken() {
  $tokenUrl = "https://graph.facebook.com/oauth/access_token?" .
    "client_id={$this->_fbAppId}&client_secret={$this->_fbSecret}" .
    // $this->_fbAppID:アプリID
    // $this->_fbSecret:アプリの秘訣
    "&grant_type=client_credentials";
  $matches = array();
  preg_match('/access_token=(.+)/', file_get_contents($tokenUrl), $matches);
  $accessToken = $matches[1];
  return $accessToken;
}

以下メモです。
  • テストユーザのlogin_urlは1時間で無効となるが、再取得は可能
  • テストユーザのaccess_tokenが取得可能のため、APIを用いてテストユーザに代わりアクションを取れる
  • 1アプリにつき500テストユーザまで作成可能
  • 現在はAPIを介したアクセスのみ可能だが、Developerアプリを介したアクセスもサポートされる予定