ネクストエンジン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 - アクセストークンのリフレッシュバッチページ作成
-
Tasks - 概要 - FuelPHP ドキュメント
http://fuelphp.jp/docs/1.7/general/tasks.html ↩