社内のシステムからZOOMでスケジュールを編集する必要があったため調査内容をまとめておきます。
執筆時点(2021-11-23)ではこの内容で実現できました。
(スケジュールを編集する部分はこちら)
事前準備
APIキーを取得する
ZOOMのマーケットプレイスからAPIキーを有効にします。
有効にする手順等は以下の記事が詳しいです。
有効にした後、APIKeyやAPISecretが表示されるので保存しておきます。
JWTの用意
ZOOMAPIでは認証情報とパラメータを含めてHTTPリクエストを送信して利用します。
認証はJWTという形式の文字列にする必要があります。
JWT
以下のようなjson文字列をBase64エンコードする。(ヘッダ部)
{
alg : “HS256”,
typ : “JWT”
}
以下のようなjson文字列をBase64エンコードする。(ペイロード)
{
iss : APIキー,
exp : 生存時間(UNIXタイムスタンプ形式)
}
大まかにはヘッダ部とペイロードを 「.(ピリオド)」で連結し、その文字列に対して秘密鍵(ZOOMのAPISecret)を用いSHA256形式で暗号化します。(署名部)
できた文字列をヘッダ部、ペイロード、署名部の順にそれぞれ「.(ピリオド)」連結したものがJWT文字列となります。
作成したJWT文字列はここから正しく作成できたかデコードして確かめられます。
今回はライブラリに任せてしまいます、PHP用にcomposerから入れました。composer require firebase/php-jwt
ZOOM APIを利用する
ZOOMでは上記のように作成したトークンをヘッダに書いて送信します。
具体的にはこのようになります。Authorization: Bearer トークン文字列;
ユーザの情報を取得する
https://api.zoom.us/v2/users/ にGETでリクエストすると使用しているZOOMアカウントの情報をjson形式で取得できます。
ヘッダにはトークンを入れましょう。
PHPのCURLでAPIを叩いたときのソースは下記のようになります。
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.zoom.us/v2/users/");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer ".$jwt.";",
"Content-type: application/json; charset=UTF-8;"
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
レスポンスはjson形式で使用したアカウントのメールアドレスや名前などユーザ情報が取得できます。
このjsonのidに書かれている文字列を使用してスケジュール編集に関するAPIを叩くので記録しておきましょう。
{
"page_count": 1,
//省略
"next_page_token": "",
"users": [
{
"id": "XXXXXXXXXXX", //これ
}
]
}
まとめ
今回はZOOMAPIの利用のための準備を行いました。ユーザの情報を取得できていればZOOM公式に書いてあるようなAPIは利用できると思います。
スケジュール操作のAPIはパラメータの説明などで長くなるため別の記事にします。
参考文献
https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed
https://marketplace.zoom.us/
https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed
https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetings
https://qiita.com/Naoto9282/items/8427918564400968bd2b
https://jwt.io/
https://openid-foundation-japan.github.io/draft-ietf-oauth-json-web-token-11.ja.html
https://github.com/firebase/php-jwt
コメントを残す