ver.1サポートサイト


マイエリア(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";
?>