search
LoginSignup
3
Help us understand the problem. What are the problem?

posted at

updated at

Organization

はじめての Zoom API - Server-to-server OAuth編

■ 前置き

Server to Server OAuth App では、Zoom API を利用する際に必要となるアクセス・トークンの生成に必要な各種 ID, Secret を提供管理し、それら情報をもってトークンを生成いただけます。 また、ユーザー認証を必要とするOAuthアプリとは異なりユーザごとのブラウザ認証を必要としません。 ユーザごとのOAuth認証についてははじめての Zoom API - OAuth編を参照ください。
Server to Server OAuth App の特徴
* オーナー権限でのAPIアクセスを許容するアクセス・トークンの生成
* 生成されたトークンの有効時間は1時間
* Refresh(更新)トークンはない
* 再発行すると以前のトークンは失効
* 非アクティブ化されると、生成済みトークンは失効
* 利用できるスコープ(利用範囲)の制限
* Server to Server OAuth App 登録の削除は可能

注意) Server to Server OAuth App (及び旧 JWT App) で生成いただけるアクセス・トークンは管理者のユーザID、パスワードと同じ権限を持っています。
自社で開発したプラットフォームへユーザから以下説明にある「ID、Secret」や生成後のトークンを共有いただく実装は個人情報の収集と同等にあたり、規約に反してしまいます。別途OAuthを含むMarketplaceでの申請承認もしくは別途ISV契約をご検討ください。
Server to Server OAuth App (及び旧 JWT App)は社内利用(Internal usage)でのみの許容となります。

Zoomサービス規約
日本語 : https://explore.zoom.us/ja/terms/ (3. a 登録情報)
英語 : https://explore.zoom.us/en/terms/ (3. a Registration Information.)

Zoom API ライセンスおよび利用規約
日本語 : https://explore.zoom.us/ja/legal/zoom-api-license-and-tou/ (6. サードパーティによる利用)
英語 : https://zoom.us/docs/en-us/zoom_api_license_and_tou.html (6. Third Party Use)

■ Marketplaceへの登録について

  1. 前段としてhttps://marketplace.zoom.us へサインインしての登録が必要となりますが、サインインするユーザ(メールアドレス)がテナントのオーナー以外の場合は権限付与をする必要があります。
    一旦、オーナー権限のユーザ(メールアドレス)で http://zoom.us へサインインし、「管理者 > 役割」よりアクセス権限を確認し必要に応じて「サーバー間 OAuth アプリ」(Server-to-server OAuth App)にチェックを入れて「設定を保存」で有効にします。

スクリーンショット 2022-06-07 8.44.15.png
スクリーンショット 2022-06-07 8.44.35.png

https://marketplace.zoom.us/ へ権限付与をされたユーザ(メールアドレス)でサインインし、右上プルダウン「Build App」より遷移します。
スクリーンショット 2022-06-07 8.51.37.png

画面右下に「Server-to-server OAuth」枠の下「Create」で登録を進めます。
スクリーンショット 2022-06-07 8.53.06.png

「App Name」に登録名を指定します。ここでは「Sample Server to Server App」と指定しています。「Create」で進みます。
スクリーンショット 2022-06-07 8.55.01.png

最初に現れる画面上の「Account ID」、「Client ID」、「Client secret」は後ほどトークンを生成する際に必要になりますので控えておきます。右下「Continue」で進みます。
スクリーンショット 2022-06-07 8.55.46.png

ユーザ情報となる「Name」と「Email address」を入力して「Continue」で進みます。
*重要な変更事項や通知をメールアドレス宛に送付される場合に使用されるため利用可能なメールアドレスを指定ください。
スクリーンショット 2022-06-07 8.59.28.png

「Event subscription」はWebHook通知機能を有効にするための設定です。ここでは割愛し「Continue」で進みます。
スクリーンショット 2022-06-07 9.02.34.png

「Scopes」ではトークンでアクセスできるAPIの範囲を指定します。ここでは、ユーザ情報をのみへのアクセスを許容するように指定しています。
スクリーンショット 2022-06-07 9.04.01.png
スクリーンショット 2022-06-07 9.04.35.png

最後に「Active your App」をクリックして有効にします。
スクリーンショット 2022-06-07 9.06.57.png

■ トークン生成方法について

トークンはBase64でエンコードされた「CliendID:ClientSecret」と「AccountID」を指定してZoom側にHTTP越しにPOSTリクエストすることで生成します。

◆Curlでの例
*Base64でのエンコード結果はBASE64などで別途取得する必要があります。

$ curl --request POST --url 'https://zoom.us/oauth/token?grant_type=account_credentials&account_id=<Account ID>' \
--header 'Authorization: Basic <Base64Encode(ClientID:ClientSecret)>' 

◆Nodeでの例

 var accountid = <Account ID>;
 var clientid = <Client ID>;
 var clientsecret = <Client Secret>;
 var basenc = Buffer.from(clientid + ":" + clientsecret).toString('base64');
 var token = await getToken(accountid,basenc);

 async function getToken(accountid,basenc){
  return new Promise(function (resolve, reject) {
    request({
          url: "https://zoom.us/oauth/token?grant_type=account_credentials&account_id="+ accountid,
          method: "POST",
          headers: {
              'Authorization': 'Basic ' + basenc
          }
      }, async function(error, response, body) {
          if (error) {
              console.log(error);
              reject(error)
          } else {
              var obj = JSON.parse(body);
              const data = obj.access_token;
              resolve(data);
          }
      });
    });
 };

■ トークンを利用したAPIリクエストについて

HTTP経由のRestAPI形式でリクエストいただけます。 もちろんCurl等のコマンドラインツールを用いて簡易的に確認いただくことも可能です。

以下アカウントオーナー自身の情報を取得する例となります。

$ curl -s --request GET --url 'https://api.zoom.us/v2/users/me' \
--header 'Authorization: Bearer <トークン>' \
| python -m json.tool

Node.js でのサンプルは下記よりご参考にしていただけます。
 Server to Server OAuth - app.js
 Sample Node app using jsonwebtoken

その他、ご利用いただけるAPIについては以下より開示しており、OpenAPI(Swagger)へも対応しております。
 https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/

■ 補足事項

その他、Server-to-server OAuthについては下記を参照ください。
Server-to-server OAuth

JWT Appsは2023年6月に廃止を予定しています。Server-to-server OAuthの利用もしくはOAuthでの実装を推奨します。その他、開示事項については下記を参照ください。
JWT App Type Deprecation FAQ

Postmanを利用した参考資料
https://jenzushsu.medium.com/setting-up-server-to-server-s2s-oauth-to-test-zoom-apis-via-postman-32c9cd7a73

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
What you can do with signing up
3
Help us understand the problem. What are the problem?