ネクストエンジンAPI - アクセストークンのリフレッシュバッチ

ネクストエンジンAPI - アクセストークンのリフレッシュバッチ

ここでは、アクセストークンをリフレッシュするためのバッチ処理について説明いたします


oil task user:refresh

リフレッシュタスクを呼び出すには、以下のコマンドを入力します

$ cd /path/to/sampel-fuelphp
$ php oil refine user:refresh

このコマンドを実行すると、

DBに格納されているアクセストークンが更新可能なユーザ全てのアクセストークンがリフレッシュされます

このバッチ処理はFuelPHPのタスク1で実装されており、

記述されているファイルはfuel/app/tasks/user.phpです


コードの解説

次に、どのようなタスクが実行されているのか、

具体的なコードを載せて説明いたします

上記ファイル内で、アクセストークンをリフレッシュするrefreshメソッドを抜粋します

    /**
     * ユーザのアクセストークンをリフレッシュするタスク
     * user_idを与えるとそのIDのユーザのアクセストークンのみリフレッシュする
     *
     * ## Usage (from command line):
     * `php oil r user:refresh [user_id]`
     *
     * @return string
     */
    public function refresh($user_id = null)
    {
        if(is_null($user_id)) {
            $users = \Model_User::findAll();
        } else {
            // NOTE: 1件でも全件でもforeachで回すためにあえて配列に格納している
            $users = array(\Model_User::find($user_id));
        }

        foreach($users as $user) {
            if(is_null($user)) continue;
            if(is_null($user->access_token) || is_null($user->refresh_token)) continue;

            $this->_refresh($user);
        }
    }

refreshメソッドは、アクセストークンをリフレッシュするメソッドです

  • ユーザを全件($user_idが与えられた場合は1件)DBから取得
  • 取得したユーザに対して
    • $userがNULLでなく、かつアクセストークンとリフレッシュトークンがセットされていれば、
    • そのユーザのアクセストークンをリフレッシュする

refreshメソッドはDBから取得したデータのチェックと_refreshを呼び出します

実際にアクセストークンをリフレッシュしている_refreshメソッドは、以下の通りです

    /**
     * アクセストークンをリフレッシュする実体部
     * @param Model_User $user トークンを更新したいユーザオブジェクト
     * @return boolean 更新に成功したらtrue、更新が必要なかった場合もtrue
     */
    private function _refresh(\Model_User $user)
    {
        $client = new \Nextengine\Api\Client();
        $client->setUser($user);

        $client->apiExecute('/api_v1_login_user/info');
    }
  • ネクストエンジンAPIクライアントのインスタンスを生成し
  • そのインスタンスにModel_Userの情報をセットし
  • ユーザ情報のAPIにアクセスする

という処理をします

ネクストエンジンAPIクライアントでも説明いたしましたが、

apiExecuteが実行された前後で、APIクライアント内のアクセストークン・リフレッシュトークンが更新されていたら、

DB内のアクセストークン・リフレッシュトークンも更新する処理を記述しています

そのため、何らかのAPIを実行すれば、DBのアクセストークン・リフレッシュトークンを更新することができます


更新履歴
  • 2015/02/17: ネクストエンジンAPI - アクセストークンのリフレッシュバッチページ作成

  1. Tasks - 概要 - FuelPHP ドキュメント

    http://fuelphp.jp/docs/1.7/general/tasks.html