9
5

More than 3 years have passed since last update.

ZoomAPIを使って、ミーティングルームを作成してみる。(Create Zoom Meeting)

Posted at

この記事について

表題の通り、ZoomのAPIを使って、ミーティングルームを作成したときのメモです。
Node.jsを使って作成しました。
認証方法はOAuthを利用しました。

ゴール

この記事では、2021年2月25日 10時~ 1時間のミーティングルームを作成することをゴールとします。

手順

1.「Zoom」アカウント作成
2.「Zoom API」利用のための事前準備
3.認証コードの取得
4.アクセストークンの発行
5.必要パラメータの作成
6.実行

1.「Zoom」アカウント作成

まだアカウントを取得していない方は、下記にアクセスしてアカウントを作成します。
https://zoom.us/jp-jp/meetings.html

2.「Zoom API」利用のための事前準備

2-1.クレデンシャル情報の取得
下記にアクセスします。
https://marketplace.zoom.us/
その後、右上の「Develop」から「Build App」をクリックします。

「Choose your app type」と聞かれるので、
今回は、「OAuth」の中の「Create」を選択します。

Create an OAuth app
「App Name」を入力します。 例)Create Meeting Test
「Choose app type」は「Account-level app」を選択します。
「Would you like to publish this app on Zoom App Marketplace?」は「OFF」にします。
 ※Zoom APP マーケットプレイスに公開したい場合はONにします。
入力を終えたら、「Create」をクリックします。

App Credentials
この画面の「Client ID」と「Client Secret」をメモしておきます。
「Redirect URL for OAuth」には、一旦、「http://localhost:8000」と入力しておきます。
「Whitelist URL」にも同じく「http://localhost:8000」と入力しておきます。
右下の「Continue」をクリックして、「Scopes」追加画面に移動します。

2-2.スコープの追加
Add Scopes
「+ Add Scopes」ボタンをクリックして、Meetingの「View and manage all user meetings」にチェックを入れ、「Done」をクリックします。
image.png

2-3.Client_ID:Client_Secretを「Base64」でエンコードする

Authorization The string "Basic" with your Client ID and Client Secret with a colon : in between, Base64 Encoded. For example, Client_ID:Client_Secret is Q2xpZW50X0lEOkNsaWVudF9TZWNyZXQ=.

下記にアクセスします。
https://www.base64decode.org/

先ほど、メモしておいた、「Client ID」と「Client Secret」を使い、
自分のClient ID:自分のClient Secretをエンコードします。
※ClientIDとClientSecretの間に「:」があるので、お忘れなく。

エンコードされた文字列をメモしておきます。

参考:https://marketplace.zoom.us/docs/guides/auth/oauth

以上で、事前準備は完了です。

3.認証コードの取得

Client_idに自分のクライアントIDを入力して、認証コード生成用のURLを作成します。
例)↓
https://zoom.us/oauth/authorize?response_type=code&client_id=あなたのクライアントID&redirect_uri=http://localhost:8000
URLにアクセスすると、Zoom API の認証が始まります。
「Authorize」をクリックして、自分のアカウントでのZoomの操作をZoom APIを通して行えるようにします。
認証に成功すると、画面遷移するので、code以下の部分をメモしておきます。
image.png

4.アクセストークンの発行

アクセストークンは以下のコードで発行できます。
(先にローカルPCの実行環境でnpm install requestを実行しておきます。)

getAccessToken.js
var request = require("request");

var options = {
  method: "POST",
  url: "https://zoom.us/oauth/token",
  qs: {
    grant_type: "authorization_code",
    code: "we473poKUZ_3dXwRRJrSumqswISsV4q1g", // 3.認証コードの取得 で取得したコードを入力する。
    redirect_uri: "http://localhost:8000",
  },
  headers: {
    Authorization:
      "Basic NjZxT3dmWElTN205RVdfdXV4UWFTZzppc21nQWVud3I0SmcyN0Z3YnE0UUE1TFB4QW1tSVBzdg", // さっきメモしたエンコードした文字列を「Basic 」の後に入れる。
  },
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

node getAccessToken.jsを実行します。
すると下記のような結果を得られます。

$ node getAccessToken.js
{"access_token":"eyJhbGciOiJIUzUxMiIsInYiOiIyLjAiLCJraWQiOiI2YjhkMDg4Ny0xNWViLTRiODAtYWM2NC0yNTgzNDdiOTQ4NTIifQ.eyJ2ZXIiOjcsImF1aWQiOiI3ZGJkM2Q3NzVlMGQ3NTFjYzljZWQxMTUzMGJjYmM2ZiIsImNvZGUiOiJ3ZTQ3M3BvS1VaXzNkWHdSUkpyU3VtcXN3SVNzVjRxMWciLCJpc3MiOiJ6bTpjaWQ6NjZxT3dmWElTN205RVdfdXV4UWFTZyIsImdubyI6MCwidHlwZSI6MCwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiIzZFh3UlJKclN1bXFzd0lTc1Y0cTFnIiwibmJmIjoxNjEzODMxODQzLCJleHAiOjE2MTM4MzU0NDMsImlhdCI6MTYxMzgzMTg0MywiYWlkIjoidEtoaHhtZVVUZG1VT3lfaGF3Sko3dyIsImp0aSI6IjBiZDdhODQ3LTVmYTktNDRiNC1iYTM3LThkNDNkNjdjOThjNSJ9.MwILIjAoWSTQJCfh1TYc3BJIVK7ptyCVv4g5h82oNc_GLLL6_S9RHD_D4MUSvZMKzt_vtLHK7DszMb3rYD5tig","token_type":"bearer","refresh_token":"eyJhbGciOiJIUzUxMiIsInYiOiIyLjAiLCJraWQiOiJmNGQ3ODMxNC1lYmM3LTQzYTQtOThiMC1jODc1OGMzOTAxMzUifQ.eyJ2ZXIiOjcsImF1aWQiOiI3ZGJkM2Q3NzVlMGQ3NTFjYzljZWQxMTUzMGJjYmM2ZiIsImNvZGUiOiJ3ZTQ3M3BvS1VaXzNkWHdSUkpyU3VtcXN3SVNzVjRxMWciLCJpc3MiOiJ6bTpjaWQ6NjZxT3dmWElTN205RVdfdXV4UWFTZyIsImdubyI6MCwidHlwZSI6MSwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiIzZFh3UlJKclN1bXFzd0lTc1Y0cTFnIiwibmJmIjoxNjEzODMxODQzLCJleHAiOjIwODY4NzE4NDMsImlhdCI6MTYxMzgzMTg0MywiYWlkIjoidEtoaHhtZVVUZG1VT3lfaGF3Sko3dyIsImp0aSI6ImRmZTExNDgwLWY1NGQtNDFkMy04YTAyLWZhMTIzODUxYWZjNCJ9.CMSJQL9R6NCJFqisJ9dmz4r5yQCJB5-cotFgfWHXz_RosDVJ4ct9LJ25weixveL_7ZaXGmr5SHCZxqREov7kXA","expires_in":3599,"scope":"meeting:write:admin"}

↑ここで発行されたaccess_tokenを下記「create_meetings.js」のheadersに「authorization: "Bearer [access_token]"」となるように貼り付けます。

create_meetings.js
var http = require("https");

var options = {
  method: "POST",
  hostname: "api.zoom.us",
  port: null,
  path: "/v2/users/me/meetings",
  headers: {
    "content-type": "application/json",
    authorization:
      "Bearer eyJhbGciOiJIUzUxMiIsInYiOiIyLjAiLCJraWQiOiIwNzNjODYyZS05NGZjLTRiODYtYTM1Yy1lNTdjNjJkZTVjYjcifQ.eyJ2ZXIiOjcsImF1aWQiOiJiODZkMzNmNDQwOWNjNzI1MWFjNTA1OTI1YWU5ZWU1MCIsImNvZGUiOiJUQnpzeHFlMTJJXzNkWHdSUkpyU3VtcXN3SVNzVjRxMWciLCJpc3MiOiJ6bTpjaWQ6Y2NFdmFTMERUYnFQR3JVQTRBMVVudyIsImdubyI6MCwidHlwZSI6MCwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiIzZFh3UlJKclN1bXFzd0lTc1Y0cTFnIiwibmJmIjoxNjEzNjU3ODAzLCJleHAiOjE2MTM2NjE0MDMsImlhdCI6MTYxMzY1NzgwMywiYWlkIjoidEtoaHhtZVVUZG1VT3lfaGF3Sko3dyIsImp0aSI6IjBlNTNlZTQ2LWMwMjMtNDI0Ny1iNTgxLWYyYThkYTkyYjAwYSJ9.A6jiK0MIAw6EBurd0Gg0Z3me3MuhTvfwEvZ77RgTgtiODjZTmwkA0vPzCKbyGXjcMbeY96oY2Y5uWKvvBY2sYA",
  },
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(
  JSON.stringify({
    // 作成するZoomイベントの詳細を入力します。
    // 設定値については、下記URLの「Request Body」の「Schema」という個所を参照してください。
    // https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate
    topic: "[Zoom API]Node.js sample - ミーティングルームの作成",
    type: 2, 
    start_time: "2021-02-25T10:00:00Z",
    duration: 60,
    timezone: "Asia/Tokyo",
    password: "12345",
    agenda: "Zoom API のテスト",
    settings: {
      host_video: true,
      participant_video: false,
      cn_meeting: false,
      in_meeting: false,
      join_before_host: true,
      jbh_time: 0,
      mute_upon_entry: true,
      watermark: true,
      use_pmi: false,
      approval_type: 0,
      audio: "both",
      auto_recording: "none",
    },
  })
);
req.end();

node create_meeting.jsを実行します。

$ node create_meeting.js
{"uuid":............................,"id":.........,}

成功すると、上記の用に、作成されたミーティングルームに紐づくいろいろな情報が取得できます。

また、Zoom Meetings Pageで下記画像のように、ミーティングが作成さているはずです。
image.png
以上です。

参考にしたサイト

https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate
https://marketplace.zoom.us/docs/guides/auth/oauth

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5