0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FileMaker Data API を使う 2025 年版 vol.3

Last updated at Posted at 2025-01-28

FileMaker Data API を使う 2025 年版 vol.2 から続きます。

利用環境

 以下の環境を前提に説明しています。

  • Claris FileMaker Pro 21.1.1.41 macOS
  • Claris FileMaker Server 21.1.1.40 Ubuntu 22(AMD)
  • サーバ: Ubuntu 22.04.5 LTS
  • SSL 証明書
  • リクエストする側のサーバ(任意)

 開発段階では、以下を使用した方が楽でしょう。

  • Postman Version 11.30.0

Login

auth - Login を説明します。
FileMaker Data API のログインは、Basic 認証を使用します。username と password を : で繋ぎ、それを Base64 でエンコードしたものを使用します。

 例えば、以下の場合、

  • username ... mlb_admin ... ユーザ名
  • password ... qwerty@2 ... パスワード

mlb_admin:qwerty@2をBase64 エンコードしたものを次の形式で渡します。

Authorization: Basic cmVtaXh3b3Jrc18xMjI4OnRvbWlrZjE5

 事前にエンコードする場合は、どんな方法でも構いませんが、FileMaker Pro を使う場合は、
ツール > データビューア で「監視」タブから、「」ボタンで、「式:」欄に以下のように記述します。

Base64Encode ( "username:password" )

すると、「結果:」欄にエンコード結果が表示されます。

ここでは、PHP のコード内でエンコードしてしまいます。

 ログインに成功すると、レスポンスに、セッションごとに発行される Bearer Session Token が得られます。以降、ログアウトまで、この Bearer Session Token を使ってリクエストを実行していくことになります。

login.php

<?php
// auth - Login
$host			= 'domain.com';
$version    	= 'vLatest';
$database   	= 'statcast';
$username		= 'mlb_admin';
$password		= 'qwerty@2';
$basicAuth		= base64_encode($username . ':' . $password);
$endpoint		= 'sessions';
$request_url	= 'https://' . $host . '/fmi/data/' . $version . '/databases/' . $database . '/' . $endpoint;
$request_method	= 'POST';

$curl = curl_init();

curl_setopt_array($curl, array(
	CURLOPT_URL => $request_url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_MAXREDIRS => 10,
	CURLOPT_TIMEOUT => 0,
	CURLOPT_FOLLOWLOCATION => true,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => 'POST',
	CURLOPT_HTTPHEADER => array(
	'Authorization: Basic ' . $basicAuth,
	'Content-Type: application/json'
	),
	CURLOPT_POSTFIELDS => "{}",
));

$response = curl_exec($curl);

curl_close($curl);

$result = mb_convert_encoding($response, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$result = json_decode($result, true);

$bearer_session_token	= $result['response']['token'];
$messages				= $result['messages'][0];

if ($messages['code'] === '0') {
	echo 'response.token: ' , $bearer_session_token, PHP_EOL;
}

 Bearer Session Token は、レスポンスの response.token に入っていますので、これを取得しておいて、以降のリクエストで使用します。

Log out

 auth - Log out です。
FileMaker Data API でログインし、処理が終わったら、ログアウトしましょう。
そのままにして、ログインを繰り返せば、FileMaker Server 上に、一定時間、ユーザが残っていることになります。これはリソースの無駄遣いなので、処理が終わったらログアウトするようにします。

ログアウトはセッションを閉じるという意味になるので、ログアウト対象の Bearer Session Token を使用して、ログアウトします。

これはログアウトだけ実行してもエラーになるので、ログイン〜 Bearer Session Token 取得〜ログアウトという流れで書いてみます。

log_out.php

<?php
// auth - Login
$host			= 'domain.com';
$version    	= 'vLatest';
$database   	= 'statcast';
$username		= 'mlb_admin';
$password		= 'qwerty@2';
$basicAuth		= base64_encode($username . ':' . $password);
$endpoint		= 'sessions';
$request_url	= 'https://' . $host . '/fmi/data/' . $version . '/databases/' . $database . '/' . $endpoint;
$request_method	= 'POST';

$curl = curl_init();

curl_setopt_array($curl, array(
	CURLOPT_URL => $request_url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_MAXREDIRS => 10,
	CURLOPT_TIMEOUT => 0,
	CURLOPT_FOLLOWLOCATION => true,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => 'POST',
	CURLOPT_HTTPHEADER => array(
	'Authorization: Basic ' . $basicAuth,
	'Content-Type: application/json'
	),
	CURLOPT_POSTFIELDS => "{}",
));

$response = curl_exec($curl);

curl_close($curl);

$result = mb_convert_encoding($response, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$result = json_decode($result, true);

$bearer_session_token	= $result['response']['token'];
$messages				= $result['messages'][0];

if ($messages['code'] === '0') {
	echo 'response.token: ' , $bearer_session_token, PHP_EOL;
}

// auth - Log out
$endpoint		= 'sessions';
$request_url	= 'https://' . $host . '/fmi/data/' . $version . '/databases/' . $database . '/' . $endpoint . '/' . $bearer_session_token;
$request_method	= 'DELETE';

$curl = curl_init();

curl_setopt_array($curl, array(
	CURLOPT_URL => $request_url,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_MAXREDIRS => 10,
	CURLOPT_TIMEOUT => 0,
	CURLOPT_FOLLOWLOCATION => true,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => $request_method,
));

$response = curl_exec($curl);

curl_close($curl);

$result = mb_convert_encoding($response, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$result = json_decode($result, true);

$response	= $result['response'];
$messages	= $result['messages'][0];

if ($messages['code'] === '0') {
    print_r($result['response']);
}

 ログアウトの response は、空の配列になります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?