サーバー側からZoom会議を作成する-1:準備

# 概要

- Zoom会議を、利用者の関与無しで作成します
- JWTは廃止されたので、OAuthを使います
- 以下の手順で進めます
    - Zoom App Marketplace サイトでZoomアプリの作成
    - 認証コードの取得
    - リフレッシュトークンとアクセストークンの生成
    - アクセストークンを使って、Zoom会議を作成

# 必要なもの
- Zoomの有料アカウント
- 管理者ユーザーまたは開発者ユーザー（「メンバー」ではアプリを作成できません）
- httpsでアクセスできるサーバー
    - 今回はノーコード・ツールのBubbleを使いました



# Zoom Appの作成と設定

- 公式の開発者ドキュメントの、[Create an OAuth app](https://developers.zoom.us/docs/integrations/create/#step-1-build-an-oauth-app) もご覧ください

## アプリの種類を選んで作成
- [Zoom App Marketplace](https://marketplace.zoom.us/) を開き、右上の「Sign In」ボタンをクリックして、メールアドレスとパスワードを入力してサインインします
- ログイン後、右上の「Develop」メニューにある「Build App」をクリックします
- アプリの種類で「General App」を選択して、「Create」 をクリックします
    - 今回は「Server to Server OAuth App」ではないので注意が必要です

![ScreenShot 2024-09-12 9.16.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/fbf6b264-ccde-499b-e348-643435d57c0d.png)


- それぞれのアプリの種類は以下です
    - General App：Zoom APIやZoomのプロダクトにアクセスするためのアプリ
    - Server to Server OAuth App：Zoom APIを使って、利用者とZoomの橋渡しをするアプリ
    - Webhook Only App：Zoomからのイベントを受信するだけのアプリ


## Basic Informationの設定

- この画面は縦に長いので、スクロールして入力してください

- 「Select how the app is managed」を「Admin-managed」を選んで「Save」をクリック

- 左上のアプリ名を「General app 123」から「My app 1」など任意の名前に変更

![ScreenShot 2024-09-12 9.27.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/93e83e5d-2897-9530-ef33-e782f802ed27.png)


- App Credentials には、Client IDとClient Secret が表示されます。後で使いますが、先に設定を済ませます


![ScreenShot 2024-09-12 9.33.39.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/8e21aab0-4039-cb29-b2d5-2fb32c9392ff.jpeg)




- 「OAuth Information」の「OAuth Redirect URL」には、用意したhttpsなサーバのURLを記入します
    - 認証コードを受け取るために使用します
    - Bubbleでは、auth-redirect のようなページを作成しておき、https://my-zoom-app-01.bubbleapps.io/version-test/auth-redirect のように、ブラウザでアクセスした時のURLを指定します
    - 独自ドメインなどの場合はお好みで
        - `https`での接続が必須なので、通常は`http://localhost/`や`http://192.168.0.1/`は使えません
        - `https;//localhost/`は、下部にあるAllow Listに追加すれば使えるかもしれませんが、未確認です。


![ScreenShot 2024-09-12 9.43.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/5132eb91-6677-bdb5-e220-62a2b4b657d0.png)

- 「Continue」をクリックして次に進みます

## Access画面

- 特に指定事項は無いので、「Continue」をクリックして次に進みます

![ScreenShot 2024-09-12 9.47.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/b9858ff9-c8bb-5009-0566-80dc0b2d5701.jpeg)

## Surface画面

- 「Meetings」にチェックを入れます
- 下にスクロールして、「Zoom Client Support」の「Mobile」をオンにして、「Continue」をクリックして次に進みます
    - 他にも設定できる項目がありますが、割愛します

![ScreenShot 2024-09-12 9.56.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/839cd333-8e28-4558-cf74-9ed001a11c6b.png)

![ScreenShot 2024-09-12 9.55.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/ef553942-3302-fb94-8252-6b25a9293cb8.png)


## Embed画面

- 特に設定項目は無いので、そのまま「Continue」をクリックして、次に進みます

![ScreenShot 2024-09-12 9.58.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/1ac75653-6182-e713-f4d5-3ecf3a66dc06.png)

## Add Scopes画面

- APIで会議の作成に必要な権限を設定します
- 「Add Scopes」をクリックして、一覧から選択、または入力します

![ScreenShot 2024-09-12 10.01.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/4e82269d-e44b-f5f0-66b4-daf1f70a5bb4.png)

- 今回指定したのは、以下です
    - meeting:write:meeting:admin
    - meeting:write:meeting:master
    - meeting:write:invite_links:admin
    - meeting:write:invite_links:master
    - meeting:update:meeting:admin
    - meeting:update:meeting:master
    - cloud_recording:write:recording_registrant:admin
    - cloud_recording:write:recording_registrant:master
- スコープの説明は、公式の開発者ドキュメントの[OAuth scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/) や、[Granular scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-granular/) を参照


![ScreenShot 2024-09-12 10.04.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/609830f8-a654-64a3-b124-dac836a2e5de.png)


# 次回
- 次回は、認証コードを取得します