ZOOM APIを利用してミーティングのスケジュールを編集する (準備編)

社内のシステムからZOOMでスケジュールを編集する必要があったため調査内容をまとめておきます。
執筆時点(2021-11-23)ではこの内容で実現できました。
(スケジュールを編集する部分はこちら)

事前準備

APIキーを取得する

ZOOMのマーケットプレイスからAPIキーを有効にします。
有効にする手順等は以下の記事が詳しいです。

https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed

有効にした後、APIKeyやAPISecretが表示されるので保存しておきます。
zoom.png

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


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です