マイエリア(PHP)- file_get_contents()を使う
最終更新日:2023年03月08日
file_get_contents()を使って、マイエリアへのログインなどを操作するサンプルです。
なお、スパイラル内部でPHPを利用する場合、ファイル関連の関数は使用禁止のためfile_get_contents()を使用できません。
代わりにcURLライブラリを使用します。マイエリア(PHP)- cURLを使うをご覧ください。
<?php
// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
$SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
// -----------------------------------------------------------------------------
// ロケータ
// -----------------------------------------------------------------------------
// ロケータのURL (変更の必要はありません)
$APIURL = "https://www.pi-pe.co.jp/api/locator";
// API用のHTTPヘッダ
$api_headers = array(
"X-SPIRAL-API: locator/apiserver/request",
"Content-Type: application/json; charset=UTF-8",
);
// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン
// JSON形式にエンコードします。
$json = json_encode($parameters);
// POSTで送信します。
$stream = stream_context_create(
array('http' => array(
'method' => 'POST',
'protocol_version' => '1.0',
'header' => $api_headers,
'content' => $json
))
);
// レスポンスデータ読み込み
$response = file_get_contents($APIURL, false, $stream);
$response_json = json_decode($response, true);
// サービス用の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_test";
$parameters["id"] = "***********";
$parameters["password"] = "***********";
$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";
// POSTで送信します。
$stream = stream_context_create(
array('http' => array(
'method' => 'POST',
'protocol_version' => '1.0',
'header' => $api_headers,
'content' => $json
))
);
// レスポンスデータ読み込み
$response = file_get_contents($APIURL, false, $stream);
$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_test";
$parameters["id"] = "***********";
$parameters["password"] = "***********";
// セッション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";
// POSTで送信します。
$stream = stream_context_create(
array('http' => array(
'method' => 'POST',
'protocol_version' => '1.0',
'header' => $api_headers,
'content' => $json
))
);
// レスポンスデータ読み込み
$response = file_get_contents($APIURL, false, $stream);
$response_json = json_decode($response, true);
// 画面に表示
echo "==> ログイン確認\n";
print_r($response_json);
echo "\n";
// -----------------------------------------------------------------------------
// マイページ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_test";
$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";
// POSTで送信します。
$stream = stream_context_create(
array('http' => array(
'method' => 'POST',
'protocol_version' => '1.0',
'header' => $api_headers,
'content' => $json
))
);
// レスポンスデータ読み込み
$response = file_get_contents($APIURL, false, $stream);
$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_test";
// セッション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";
// POSTで送信します。
$stream = stream_context_create(
array('http' => array(
'method' => 'POST',
'protocol_version' => '1.0',
'header' => $api_headers,
'content' => $json
))
);
// レスポンスデータ読み込み
$response = file_get_contents($APIURL, false, $stream);
$response_json = json_decode($response, true);
// ログアウト後URL
$url = $response_json['url'];
// 画面に表示
echo "==> ログアウト後URL\n";
echo $url . "\n\n";
?>