マイエリア(PHP)
最終更新日:2023年02月21日
マイエリアを利用するサンプルプログラムです。
スパイラル内部でPHPを利用する場合、ファイル関連の関数は使用禁止のため、代わりにcURLライブラリもしくはApiCommunicatorを使用します。
cURLライブラリは、スパイラルにあらかじめインストールされています。
ApiCommunicatorを利用する場合はアカウント内APIの設定を「ON」に変更してからご利用ください。
ロケータの利用法用は別途ロケータ(PHP)- cURLライブラリを使うをご参照ください。
※外部呼出しに利用するサンプルプログラムにはスパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますのでご注意ください。
使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。
cURLライブラリを利用する場合
<?php
// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
$SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
// -----------------------------------------------------------------------------
// ロケータ
// -----------------------------------------------------------------------------
// ロケータのURL (変更の必要はありません)
$locator = "https://www.pi-pe.co.jp/api/locator";
// サービス用のURL
$APIURL = $response_json['location'];
// -----------------------------------------------------------------------------
// ログイン
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: area/login/request",
"Content-Type: application/json; charset=UTF-8",
);
// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["passkey"] = time(); //エポック秒
$parameters["my_area_title"] = "api_auth";
$parameters["id"] = "test01";
$parameters["password"] = "pass01";
$parameters["url_type"] = "2";
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// JSON形式にエンコードします。
$json = json_encode($parameters);
echo "===> area/login\n";
echo $json . "\n\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$response_json = json_decode($response, true);
// セッションID
$jsessionid = $response_json['jsessionid'];
// 画面に表示
echo "==> jsessionid\n";
echo $jsessionid . "\n\n";
// -----------------------------------------------------------------------------
// ログイン確認
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: area/status/request",
"Content-Type: application/json; charset=UTF-8",
);
// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["passkey"] = time(); //エポック秒
$parameters["my_area_title"] = "api_auth";
$parameters["id"] = "test01";
$parameters["password"] = "pass01";
// セッションIDを付けます
$parameters["jsessionid"] = $jsessionid;
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// JSON形式にエンコードします。
$json = json_encode($parameters);
echo "===> area/status\n";
echo $json . "\n\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$response_json = json_decode($response, true);
// 画面に表示
echo "==> ログイン確認\n";
print_r($response_json);
// -----------------------------------------------------------------------------
// マイページURL
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: area/mypage/request",
"Content-Type: application/json; charset=UTF-8",
);
// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["passkey"] = time(); //エポック秒
$parameters["my_area_title"] = "api_auth";
$parameters["my_page_id"] = "100";
$parameters["url_type"] = "2";
// セッションIDを付けます
$parameters["jsessionid"] = $jsessionid;
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// JSON形式にエンコードします。
$json = json_encode($parameters);
echo "===> area/mypage\n";
echo $json . "\n\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$response_json = json_decode($response, true);
// マイページURL
$url = $response_json['url'];
// 画面に表示
echo "==> マイページURL\n";
echo $url . "\n\n";
// -----------------------------------------------------------------------------
// ログアウト
// -----------------------------------------------------------------------------
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: area/logout/request",
"Content-Type: application/json; charset=UTF-8",
);
// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
$parameters["passkey"] = time(); //エポック秒
$parameters["my_area_title"] = "api_auth";
// セッションIDを付けます
$parameters["jsessionid"] = $jsessionid;
// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);
// JSON形式にエンコードします。
$json = json_encode($parameters);
echo "===> area/logout\n";
echo $json . "\n\n";
// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);
// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$response_json = json_decode($response, true);
// ログアウト後URL
$url = $response_json['url'];
// 画面に表示
echo "==> ログアウト後URL\n";
echo $url . "\n\n";
?>
ApiCommunicatorを利用する場合
<?php
//マイエリアタイトル
$AREA_TITLE = "api_auth";
// ログインするレコードの識別キー
$LOGIN_KEY = "test01";
// ログインするレコードのパスワード
$LOGIN_PWD = "pass01";
// 一覧表の検索フォームのタイトル
$SEARCH_TITLE = "api_search";
//============================================
// ■API共通
//============================================
// APIコミュニケータをセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();
//============================================
// ログイン
//============================================
// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("my_area_title", $AREA_TITLE);
$request->put("id", $LOGIN_KEY);
$request->put("password", $LOGIN_PWD);
$request->put("url_type", "2");
// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("area", "login", $request);
// レスポンスの取得
if ($response->get("code") == 0) {
echo "<p>area/login 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
echo "<p>area/login エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);
//============================================
// 一覧表のデータ取得
//============================================
// jsessionidの取得
if ($response->get("code") == 0) {
$jsessionid = $response->get("jsessionid");
} else {
print("\ntable/data エラーが発生しました。(code:" . $response->get("code") . ")\n");
}
// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("jsessionid", $jsessionid);
$request->put("my_area_title", $AREA_TITLE);
$request->put("search_title", $SEARCH_TITLE);
// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("table", "data", $request);
// レスポンスの取得
if ($response->get("code") == 0) {
echo "<p>table/data 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
echo "<p>table/data エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);
//================================================
// ログアウト
//================================================
// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("jsessionid", $jsessionid);
$request->put("my_area_title", $AREA_TITLE);
// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("area", "logout", $request);
// レスポンスの取得
if ($response->get("code") == 0) {
echo "<p>area/logout 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
echo "<p>area/logout エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);
?>