開発情報・ナレッジ

投稿者: SPIRERS ナレッジ向上チーム 2021年11月26日 (金)

認証APIを使って認証エリアにログインする方法

CMSなどの外部のサイトとの連携の際に、認証エリアにAPIを利用してログインする方法を解説します。

利用シーン

認証APIを利用するとCMSなどとのシームレスな連携を実現できます。
例えば、CMSとの連携でセッション管理をver.2側で行ったり、CMSからの遷移時にログイン画面を挟まずに遷移できたりするようになります。

実装方法

CMSでログインする際にまずは認証APIのログインのコードを実行してください。
コード例は下記となります。

//SPIRAL Ver2のAPI用のURL
$base_url = "https://api.spiral-platform.com/v1/";
$url = $base_url."sites/{siteId}/authentications/{authenticationId}";

//APIキー
$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

//ヘッダ
$header = array(
"Authorization:Bearer ".$apikey,
"Content-Type:application/json",
"X-Spiral-App-Authority"."manage",
);

//urlの末尾にmethodを付加
$url = $url."/login";

//ログインしたいレコード情報を設定
//ボディ
$body = [
"id" => "test01",
"password" => "pass01"
];

//配列をjson形式に変換
$json_body = json_encode($body);

// curlライブラリを使用して送信
//セッションを初期化する
$curl = curl_init();

//実行結果を文字列で取得できるように設定
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//urlを指定
curl_setopt($curl, CURLOPT_URL , $url);
//ヘッダを指定
curl_setopt($curl, CURLOPT_HTTPHEADER , $header);
//ボディを指定
curl_setopt($curl, CURLOPT_POSTFIELDS , $json_body);
//メソッドを指定
curl_setopt($curl, CURLOPT_CUSTOMREQUEST , 'POST');

//セッションを実行し、その結果を取得
$response = curl_exec($curl);

//cURLのエラーメッセージを表示
if (curl_errno($curl)) echo curl_error($curl);

//セッションを閉じる
curl_close($curl);

//json形式を配列に変換して表示
print_r(json_decode($response , true));

そうするとトークンがかえってきますので、それをもとに遷移したい認証エリアのページのクエリ付URLを取得してください。
コード例は下記となります。

//urlの末尾にmethodを付加
$url = $url."/oneTimeLogin";

//ボディ
$body = [
//有効性を確認したいトークンを設定
"token" => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
//ワンタイムURLを発行したい認証エリアのページパスを設定
"path" => "/XXXXX/XXXXX",
];

//配列をjson形式に変換
$json_body = json_encode($body);

// curlライブラリを使用して送信
//セッションを初期化する
$curl = curl_init();

//実行結果を文字列で取得できるように設定
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//urlを指定
curl_setopt($curl, CURLOPT_URL , $url);
//ヘッダを指定
curl_setopt($curl, CURLOPT_HTTPHEADER , $header);
//ボディを指定
curl_setopt($curl, CURLOPT_POSTFIELDS , $json_body);
//メソッドを指定
curl_setopt($curl, CURLOPT_CUSTOMREQUEST , 'POST');

//セッションを実行し、その結果を取得
$response = curl_exec($curl);

//cURLのエラーメッセージを表示
if (curl_errno($curl)) echo curl_error($curl);

//セッションを閉じる
curl_close($curl);

//json形式を配列に変換して表示
print_r(json_decode($response , true));

クエリ付URLが取得できたら、そのURLに遷移すると自動でログインされます。
認証APIを使ったログイン方法は以上の2つのステップのみで完結するため、非常に簡単に実装ができるようになっています。

解決しない場合はこちら コンテンツに関しての
要望はこちら