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アプリを介したアクセスもサポートされる予定

0 件のコメント:

コメントを投稿