この記事では Authentication(認証API)のメソッドごとに、サンプルコードをまとめています。
SPIRAL ver.2 でAPIを使用する時の参考になれば幸いです。
SPIRAL ver.2 でAPIを使用する時の参考になれば幸いです。
- APIメソッドごとのサンプルコードまとめ Authentication(認証API)
- APIメソッドごとの権限設定方法まとめ Authentication(認証API)
- APIメソッドごとの権限設定&サンプルコード 記事一覧
はじめに
この記事で紹介するサンプルコードでは、共通のcurl送信用モジュールを使用しています。
そのため、必ず下記のモジュールを記載するようにしてください。
※それぞれのメソッドのサンプルコードに「共通モジュール」の記載箇所が明記されていますので、そちらにこのモジュールを貼り付けてご使用ください。
※共通モジュールなので、APIメソッドを複数回実行する場合でも1回だけ記載すれば大丈夫です。
※APIメソッドを複数回実行する場合は、サンプルコードの「API実行」部分に適宜記述を追加してください。
そのため、必ず下記のモジュールを記載するようにしてください。
※それぞれのメソッドのサンプルコードに「共通モジュール」の記載箇所が明記されていますので、そちらにこのモジュールを貼り付けてご使用ください。
※共通モジュールなので、APIメソッドを複数回実行する場合でも1回だけ記載すれば大丈夫です。
※APIメソッドを複数回実行する場合は、サンプルコードの「API実行」部分に適宜記述を追加してください。
共通モジュール
//------------------------------ // 共通モジュール //------------------------------ class CommonBase { /** * シングルトンインスタンス * @var UserManager */ protected static $singleton; public function __construct() { if (self::$singleton) { throw new Exception('must be singleton'); } self::$singleton = $this; } /** * シングルトンインスタンスを返す * @return UserManager */ public static function getInstance() { if (!self::$singleton) { return new CommonBase(); } else { return self::$singleton; } } /** * V2用 API送信ロジック * @return Result */ function apiCurlAction($method, $addUrlPass, $data = null, $multiPart = null, $jsonDecode = null) { $header = array( "Authorization:Bearer ". API_KEY, "X-Spiral-Api-Version: 1.1", ); if($multiPart) { $header = array_merge($header, array($multiPart)); } else { $header = array_merge($header, array("Content-Type:application/json")); } if(APP_ROLE){ $header = array_merge($header, array("X-Spiral-App-Role: ".APP_ROLE)); } // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, API_URL. $addUrlPass); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); if ($method == "POST") { if ($multiPart) { curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } else { curl_setopt($curl, CURLOPT_POSTFIELDS , json_encode($data)); } curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "PATCH") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } if ($method == "DELETE") { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); } $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); if($jsonDecode){ return $response; }else{ return json_decode($response, true); } } }
設定値に関して
共通で使用する値に関しては、定数として初めに設定します。
具体的には下記のような値を設定してください。
上記はAPIキーの記述を「PHP環境変数設定」を利用した場合のコードとなります。
このように定数を設定する時に、ver.2 機能の「PHP環境変数設定」を利用することで、
本番環境とテスト環境でキーが異なっていても、コードを書き換える必要がなく、保守性が高まります。
APIキーなど複数ページで使用するものは、環境変数設定をしておきましょう。
その他詳しくはサポートサイト「PHP環境変数」をご参照ください。
具体的には下記のような値を設定してください。
API_URL | リクエスト先URLの固定部分です。固定値ですので特に変更する必要はありません。 |
---|---|
API_KEY | 発行したAPIキーを設定してださい。別途権限の付与が必要になります。 |
APP_ROLE | アプリロールを指定することはできませんので、値は空で大丈夫です。 |
SITE_ID | API利用する認証エリアがあるサイトのIDを設定してください。 |
AREA_ID | API利用する認証エリアのIDを設定してください。 |
設定値
define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", $SPIRAL->getEnvValue("apikey")); define("APP_ROLE", ""); define("SITE_ID", "サイトID"); define("AREA_ID", "認証エリアID");
補足
define("API_KEY", $SPIRAL->getEnvValue("apikey"));
このように定数を設定する時に、ver.2 機能の「PHP環境変数設定」を利用することで、
本番環境とテスト環境でキーが異なっていても、コードを書き換える必要がなく、保守性が高まります。
APIキーなど複数ページで使用するものは、環境変数設定をしておきましょう。
その他詳しくはサポートサイト「PHP環境変数」をご参照ください。
認証エリアログインメソッド
認証エリアログインを実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php //------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", $SPIRAL->getEnvValue("apikey")); define("APP_ROLE", ""); define("SITE_ID", "サイトID"); define("AREA_ID", "認証エリアID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // ログインするレコードを指定 $body = array( "id" => "IDフィールドの値", "password" => "パスワードの値" ); $resultLogin = $commonBase->apiCurlAction("POST", "/sites/". SITE_ID. "/authentications/". AREA_ID. "/login", $body); //------------------------------ // 共通モジュール //------------------------------ // ※こちらに「共通モジュール」を必ず記載してください。 ?>
補足
これ以降のメソッドの「token」はログインメソッドのレスポンスである、エリア認証トークン(token)を利用します。
そのため、まず初めにこのメソッドを実行する必要がありますので、ご注意ください。
またレスポンスでエリア認証トークンの有効期限(expireTime)が返ってきます。
そのままだとエポック秒ですが、下記のコードで日時に変換することができます。
そのため、まず初めにこのメソッドを実行する必要がありますので、ご注意ください。
またレスポンスでエリア認証トークンの有効期限(expireTime)が返ってきます。
そのままだとエポック秒ですが、下記のコードで日時に変換することができます。
date("Y-m-d h:i:s", $resultLogin["expireTime"]);
エリア認証トークン有効性確認メソッド
エリア認証トークン有効性確認を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php //------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", $SPIRAL->getEnvValue("apikey")); define("APP_ROLE", ""); define("SITE_ID", "サイトID"); define("AREA_ID", "認証エリアID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); $body = array( "token" => "認証エリアトークン", "extendExpireTime" => "true" ); $resultStatus = $commonBase->apiCurlAction("POST", "/sites/". SITE_ID. "/authentications/". AREA_ID. "/status", $body); //------------------------------ // 共通モジュール //------------------------------ // ※こちらに「共通モジュール」を必ず記載してください。 ?>
補足
このメソッドではエリア認証トークンの有効性を確認することができます。
また「extendExpireTime」を true にすることで、確認と同時にセッションを延長することができます。
「extendExpireTime」は、デフォルトが true になっていますので、セッションを延長しない場合は false を指定ください。
また「extendExpireTime」を true にすることで、確認と同時にセッションを延長することができます。
「extendExpireTime」は、デフォルトが true になっていますので、セッションを延長しない場合は false を指定ください。
認証エリアログインワンタイムURL発行メソッド
認証エリアログインワンタイムURL発行を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php //------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", $SPIRAL->getEnvValue("apikey")); define("APP_ROLE", ""); define("SITE_ID", "サイトID"); define("AREA_ID", "認証エリアID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); $body = array( "token" => "認証エリアトークン", "path" => "発行する認証エリアページパス" ); $resultOneTimeLogin = $commonBase->apiCurlAction("POST", "/sites/". SITE_ID. "/authentications/". AREA_ID. "/oneTimeLogin", $body); //------------------------------ // 共通モジュール //------------------------------ // ※こちらに「共通モジュール」を必ず記載してください。 ?>
補足
認証エリアログアウトメソッド
レコード変更を実行したい場合には下記のサンプルコードを使用してみてください。
APIリファレンス
サンプルコード
<?php //------------------------------ // 設定値 //------------------------------ define("API_URL", "https://api.spiral-platform.com/v1"); define("API_KEY", $SPIRAL->getEnvValue("apikey")); define("APP_ROLE", ""); define("SITE_ID", "サイトID"); define("AREA_ID", "認証エリアID"); //------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); $body = array( "token" => "認証エリアトークン" ); $resultLogout = $commonBase->apiCurlAction("POST", "/sites/". SITE_ID. "/authentications/". AREA_ID. "/logout", $body); //------------------------------ // 共通モジュール //------------------------------ // ※こちらに「共通モジュール」を必ず記載してください。 ?>
補足
「token」はAPIログインした時のレスポンスである認証エリアトークンを指定する必要があります。
そのため、ログアウトメソッドはAPIでログインした場合でしか利用できません。
ログインフォームから通常通りログインして、APIでログアウトといった処理はできませんのでご注意ください。
そのため、ログアウトメソッドはAPIでログインした場合でしか利用できません。
ログインフォームから通常通りログインして、APIでログアウトといった処理はできませんのでご注意ください。
ver.2 でPHPの実行結果を確認する方法
ver.2 では echo などの関数が使えないため、実行結果を確認するためには Thymeleaf を使用する必要があります。
はじめは分かりにくい部分ではありますので、初歩的な確認方法を以下で解説いたします。
1)ソース設定でフリーコンテンツブロックを作成して以下の Thymeleaf を記載してください。
2)作成したブロックをページに追加してください。
3)ページの「PHP」タブにコードを記載し、コード内で実行結果を Thymeleaf に渡す記載をしてください。
上記ページを作成することで、ページURLを開くと実行結果を確認することができます。
ver.2 でPHPのデバッグをしたい場合などに活用してみてください。
はじめは分かりにくい部分ではありますので、初歩的な確認方法を以下で解説いたします。
1)ソース設定でフリーコンテンツブロックを作成して以下の Thymeleaf を記載してください。
<div> <div th:if="${cp.result.isSuccess}"> <div th:text="${cp.result.value['API_RESPONSE']}"></div> </div> <div th:if="${!cp.result.isSuccess}"> <div th:text="${cp.result.errorMessage}"></div> </div> </div>
3)ページの「PHP」タブにコードを記載し、コード内で実行結果を Thymeleaf に渡す記載をしてください。
例:APIで認証エリアにログインしたレスポンスを確認したい場合
//------------------------------ // API実行 //------------------------------ $commonBase = CommonBase::getInstance(); // ログインするレコードを指定 $body = array( "id" => "IDフィールドの値", "password" => "パスワードの値" ); $resultLogin = $commonBase->apiCurlAction("POST", "/sites/". SITE_ID. "/authentications/". AREA_ID. "/login", $body); // レスポンスを Thymeleaf に受け渡す $SPIRAL->setTHValue("API_RESPONSE", $resultLogin);
ver.2 でPHPのデバッグをしたい場合などに活用してみてください。