はじめに
以前、「Filemakerでzoom予約機能を作ったお話」という記事を書き、これまで順調に・快適にFilemakerでzoom予約機能を使っていたのですが、さぁ今年もzoomのAPI認証に必要なJWTトークンの更新をしようかな~と作業しようと思ったらなんと・・・!
zoomのJWTトークン認証方式は、2023年9月1日に廃止されるんですって!?(2023年6月1日に新規作成を停止)知らなかったーーー!
といっても、1年も前に告知されていたことを今更知り、なんなら1年前、当時のCTOからお知らせまでもらっていたのにそれにも気が付かなかったという、完全に私の落ち度しかない話です・・・すみません。
というわけで、急ぎ対応しましたので、記録します。
認証方式の変更
JWTトークンは廃止になるので、Server-to-Server OAuth方式か、OAuth方式に変更してね、ということなので、とりあえず、急いでいるのでServer-to-Serverで試します。
Marketplaceでのアプリ作成
「はじめての Zoom API - Server-to-server OAuth編 のQiita記事を参考に進めました。ので、説明は割愛します。
1点だけ、Scopesを選択する画面で、私はzoomのMeetingを作る作業がしたいので、meeting:write:admin
の権限がもらえそうな、「View and manage all user meetings」にチェックを入れました。
Client ID と Client Secret をbase64エンコードする
Marketplaceで取得したClient ID と Client Secretを「:」でつなぎ、base64エンコードしたキーを大事に持っておきます。
echo -n clientID:ClientSecret | base64
Filemakerのzoomミーティング作成APIにひと手間加える
必要なフィールドを3つ追加
- account_id → Marketplaceで発行されたAccount idをセット
- base64key → 上のclientID:ClientSecretをbase64エンコードしたキーをセット
- zoom_prepare_json → zoomに問い合わせをして返ってきたjsonを格納するためのフィールド
必要なスクリプトステップ
- ターゲット:zoom_prepare_jsonフィールド
- URLを指定:
"https://zoom.us/oauth/token?grant_type=account_credentials&account_id=" & [account_id]
- cURLのオプション:
"--request POST --header \"Authorization: Basic " & [base64key] & "\""
このステップを実行すると、zoom_prepare_jsonに、ミーティング作成に必要なaccess_tokenが含まれたjsonが返ってくるので、JSONGetElement関数を使って、access_tokenの値を取り出して、変数にセットします。
この変数をミーティング作成スクリプトのbearer_tokenにセットしてあげれば、これまで通り、ミーティング作成できるようになります。以前私の書いた記事でいうところのSTEP.3で、cURLのオプションを設定する箇所を、JWTトークンでなく、今回作ったaccess_tokenの値にしてあげればOKです!
スクリプトの全体像
おわりに
急いで認証方式を更新したので、いろいろ説明が雑でしたが、最後まで読んでいただきありがとうございました。zoomのJWTトークン認証廃止を目前に、大きな修正を入れることもなく改修ができてよかったです。Filemakerの「URLから挿入」とJSON成形系の計算式、改めてありがたや!!そして、便利で簡単に使えるzoomの存在もありがたや!!と思いました。
参考にさせていただいた記事