top of page
ティーマネジメント株式会社 Tmanagement
TM_ロゴ_決定分_ol2.png

Claris FileMaker搭載のAPIについての備忘録2

  • 田中
  • 8月28日
  • 読了時間: 5分
ree

こんにちは、ティーマネジメントの田中です。


FileMaker Server / Cloud で使用できるAPIについて、なんとなくはわかるけど、

ヘルプを読んでもよく分からない、

実際使うとなるとどうすればいいのか…と悩んだ経験がありました。


FileMaker Pro / Go から、FileMaker Server / Cloud のAPIを利用する方法について、

いろいろ試行錯誤した結果、なんとかやりたいことは行えるようになりましたので、

記事として残したいと思います。


Claris FileMakerで使用できるAPIの種類については、前回記事をご覧ください。

今回は、Admin APIを使ってサーバー情報を取得する方法について解説いたします。



やりたかったこと

ローカル環境(インターネット接続あり)のFileMaker Pro / Go から、

①FileMaker Serverのメタデータ取得し、サーバー現在時刻を取得する

②FileMaker Serverで共有されているカスタムAppのレコードを更新する


①について解説いたします。



API利用の基本的な流れ

APIを利用する際には、以下の手順を踏んで操作を行います。


・ログイン(認証)

アカウント名とパスワードを用いてログインし、認証用トークンを取得します。


・操作の実行

取得した認証用トークンを使って実際のAPI操作を行います。

AdminAPIの場合:サーバ情報の取得等

DataAPIの場合:データレコードの取得・編集・削除など


・ログアウト

作業が終了したら、認証用トークンを用いてログアウトします。



接続の有効期間について

FileMakerの各種APIでは、最後にトークンを使用してから15分間、接続が維持されます。この間は同時接続ライセンス数にカウントされます。



利用できるAPI操作

FileMaker APIでは、主に以下のHTTPメソッドが利用可能です。


・GET

・POST

・PATCH

・DELETE


それぞれの操作により、情報取得、登録、更新、削除といった処理が行えます。



APIドキュメントの場所

APIドキュメントが保存されている場所は、OSによって異なります。


Windows

[ドライブ]:¥Program Files¥FileMaker¥FileMaker Server¥Documentation¥Admin API Documentation

Linux

/opt/FileMaker/FileMaker Server/Documentation/Admin API Documentation

macOS

/ライブラリ/FileMaker Server/Documentation/Admin API Documentation

インストール場所等によって異なりますので、ご利用の環境をご確認ください。



①ログイン(認証)

今回はFileMaker Pro/Goから、FileMaker Admin APIを利用するため、

FileMakerのスクリプトステップ「URLから挿入」を使用して情報を取得します。

URLから挿入

ターゲット:$$json

URLを指定:https://[SERVER_ADDRESS]:443/fmi/admin/api/v2/user/auth

cURLオプション:$curl

[SERVER_ADDRESS]にはFileMaker Server/Cloudのアドレスを入れてください。


cURLオプションには、事前に「テキストを挿入」スクリプトステップで、下記の文字列を変数に入れておきます。

変数:$curl

curl -X POST \

-H "Authorization: Basic [YOUR_ACCOUNT]" \

-H "Content-type: application/json" \

-H "Content-Length: 0"

[YOUR_ACCOUNT]には、Admin Consoleへログインするためのアカウント、パスワードを、「:」(半角コロン)で区切ったものを、Base64エンコードした文字列を入れてください。

Base64エンコードはFileMaker内の関数で行えるため、事前に変換しておきます。

Base64EncodeRFC ( 3548 ; “[アカウント]” & ":" & “[パスワード]” )

Base64Encode関数で変換した場合、変換後の文字列に改行が含まれるため、

FileMakerの「URLから挿入」関数がうまく動作しません。

Base64EncodeRFC関数は、オプションを指定することで改行なしで変換することが可能のため、

こちらを使用しています。


上記のスクリプトステップをまとめると、以下のようになります。


ree

URLやアカウント、パスワードに間違いがない場合、

グローバル変数「$$json」をデータビューアで確認すると、以下のような結果が得られます。


ree

tokenが、Admin APIを利用する際に必要な認証トークンとなります。

この結果からtokenを取りだすには、FileMakerの「JSONGetElement」関数を使用します。

また、正常に取得できている場合、messagesのtext部分が「OK」となっているため、こちらでも判断可能です。

それぞれ、以下のように記載できます。


ree

ステータスの取得

JSONGetElement ( $$json ; "messages[0].text" )

トークンの取得

JSONGetElement ( $$json ; "response.token" )



②操作の実行

では、次に実際にこのトークンを使って、Admin APIを利用します。

今回はサーバーの時間を取得したいので、

サーバーメタデータの取得をAdmin APIから行います。


サーバーメタデータを取得する際は、「URLから挿入」スクリプトステップを次のように指定します。

URLから挿入

ターゲット:$$serverMeta

URLを指定:https://[SERVER_ADDRESS]:443/fmi/admin/api/v2/server/metadata


cURLオプション内にトークンを含める必要があります。

先ほどグローバル変数「$$token」に認証トークンを格納したので、その変数をそのまま利用します。


ree

"curl -X GET \

-H \"Authorization: Bearer " & $$token & "\" \

-H \"Content-type: application/json\"

-H \"Content-Length: 0\""


計算式内に直接cURLオプションを記載する場合、「”」(ダブルクォーテーション)は「\」(バックスラッシュ)を用いてエスケープさせます。


ree

このスクリプトを実行すると、$$serverMetaに以下のような結果が得られます。


ree

サーバーの名前、バージョン、ホストの時間などが確認できます。

こちらもJSON形式になっておりますので、JSONGetElement関数を用いて取り出せます。


ree

JSONGetElement ( $$serverMeta ; "response.ServerHostTime" )


$$serverTimeをデータビューアで確認すると、以下のようになっていることがわかります。


ree

タイムスタンプが取得できました。

FileMakerのタイムスタンプ形式とは形式が異なるものとなってるので、変換する必要があります。

FileMaker関数を用いた変換の一例として載せておきます。

Let (

              [

              ~servertime = $$serverTime

              ] ;


              GetAsTimestamp (

                            Substitute (

                                          ~servertime ;

                                          [ "-" ; "/" ] ;

                                          [ "T" ; " " ]

                            )

              )

)

PC、iOSデバイスなどの時刻がサーバー時間と異なっている場合の不正防止などを、このサーバー時間を利用して行うことができます。


もし認証に失敗する場合、APIの15分制限を過ぎている可能性がありますので、①をやり直してみてください。



③ログアウト

このままでも15分経てば認証トークンが無効になるのですが、

不要になったものはログアウトしておきましょう。


ログアウト処理を行う際は、URLから挿入スクリプトステップに以下のように記載します。

URLから挿入

ターゲット:$$logout

URLを指定:”https://[YOUR_ADDRESS]:443/fmi/admin/api/v2/user/auth/" & $$token

cURLオプション:"curl -X DELETE”

ree


messagesのtextが「OK」になっていれば、正常にログアウト完了しています。


ree


今回はAdminAPIの認証と、サーバー時刻の取得方法を紹介させていただきました。

APIドキュメントを閲覧いただくと、他にもさまざまな操作があることがわかりますので、

ぜひ他の操作にも活用ください。


次回はDataAPIを用いて、データベースの操作を行う方法をご紹介する予定です。

CONTACT

お問い合わせ

滋賀県大津市別保三丁目11番32号

077-536-6330

平日10:00~18:00

労働者派遣事業 派 25-300477

有料職業紹介事業  25-ユ-300214 

問い合わせのご用件 必須項目

送信ありがとうございました

Copyright © ティーマネジメント株式会社 All Rights Reserved.

bottom of page