この記事について
表題の通り、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」をクリックします。
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以下の部分をメモしておきます。
4.アクセストークンの発行
アクセストークンは以下のコードで発行できます。
(先にローカルPCの実行環境でnpm install request
を実行しておきます。)
varrequest=require("request");varoptions={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)thrownewError(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]"」となるように貼り付けます。
varhttp=require("https");varoptions={method:"POST",hostname:"api.zoom.us",port:null,path:"/v2/users/me/meetings",headers:{"content-type":"application/json",authorization:"Bearer eyJhbGciOiJIUzUxMiIsInYiOiIyLjAiLCJraWQiOiIwNzNjODYyZS05NGZjLTRiODYtYTM1Yy1lNTdjNjJkZTVjYjcifQ.eyJ2ZXIiOjcsImF1aWQiOiJiODZkMzNmNDQwOWNjNzI1MWFjNTA1OTI1YWU5ZWU1MCIsImNvZGUiOiJUQnpzeHFlMTJJXzNkWHdSUkpyU3VtcXN3SVNzVjRxMWciLCJpc3MiOiJ6bTpjaWQ6Y2NFdmFTMERUYnFQR3JVQTRBMVVudyIsImdubyI6MCwidHlwZSI6MCwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiIzZFh3UlJKclN1bXFzd0lTc1Y0cTFnIiwibmJmIjoxNjEzNjU3ODAzLCJleHAiOjE2MTM2NjE0MDMsImlhdCI6MTYxMzY1NzgwMywiYWlkIjoidEtoaHhtZVVUZG1VT3lfaGF3Sko3dyIsImp0aSI6IjBlNTNlZTQ2LWMwMjMtNDI0Ny1iNTgxLWYyYThkYTkyYjAwYSJ9.A6jiK0MIAw6EBurd0Gg0Z3me3MuhTvfwEvZ77RgTgtiODjZTmwkA0vPzCKbyGXjcMbeY96oY2Y5uWKvvBY2sYA",},};varreq=http.request(options,function(res){varchunks=[];res.on("data",function(chunk){chunks.push(chunk);});res.on("end",function(){varbody=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/meetingcreatetopic:"[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で下記画像のように、ミーティングが作成さているはずです。
以上です。
参考にしたサイト
https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate
https://marketplace.zoom.us/docs/guides/auth/oauth