24
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Zoom APIを試してみる OAuth編

Posted at

「Zoom APIを試してみる JWT編」
https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed
では ユーザ情報を取得してみました。

さて、 Zoom の Chat と連動する何かを作ろうかと思いましたが、Chat関係のAPI は OAuth のみ対応

Note: This API only supports user-managed .
「List User's Chat Messages - Chat Messages - Zoom API - API Reference」
https://marketplace.zoom.us/docs/api-reference/zoom-api/chat-messages/getchatmessages

ということらしいです。ということで OAuth を試してみます。

(なお、後述しますがこのAPIは目的に適合しませんでした)

アプリの登録と API Key の取得

で以下のページを開きます。

image.png

「Develop」のボタンを押してメニュー中の「Build App」を押します。
ボタンは画面の横幅がないと出てこないので注意。

image.png

今度は OAuth を選びます

image.png

アプリ名を入力して「Create」。
「Would you like to publish this app on Zoom App Marketplace?」
は今回はOFFにしました。
image.png

OAuth のリダイレクト先を入力します。しかしながらこれだけの入力だと・・・

image.png

後述のプログラムを試してみるとエラーが出ました。あれーおかしーなーとおもっていたら

image.png

Whitelist URL に Redirect URL for OAuth を含めた値を指定しないといけませんでした。ブラウザ画面キャプチャ用にウィンドウを小さくしすぎて気が付いてませんでしたとさ。

image.png

イベントを取得したいので Event Subscriptions を選んで。 Continue。

image.png

購読設定に名前を付けます。イベントを受け取るURLと Event types で何のイベントを受け取るかを決めて「Continue」。

(なお、ここで設定はしましたが後述するように今回は使いませんでした)。

image.png
使用するAPIを登録します。

リダイレクト元のページを作る


<html>
<body>
<?php

$CLIENTID="i8NJn5vETrCUX5TUCru3Pw";
$REDIRECTURI="http://www..../rcvauth.php";
$REQUESTURI="https://zoom.us/oauth/authorize?response_type=code&client_id=" . $CLIENTID . "&redirect_uri=" . $REDIRECTURI;

echo("<a href=" . $REQUESTURI . "> Go! </a>")

?>

</body>
</html>

上記のプログラムを作ってブラウザでリンクを押すとZoomのOAuth認証ページに移ります。

image.png

リダイレクト先のページを作る

「Zoomのアプリケーションの作成 | 記録程度」
https://1507t.xyz/zoom-app-create
にある
「リダイレクト後、アクセストークンを得る例」
のプログラムをそのまま使い、パラメータ $Client_ID や $Redirect_URL を今回用に直してリダイレクト先ページのアドレスとして配置。

リダイレクトするとエラーが出ます。



[Sat May 09 11:02:47.109571 2020] [:error] [pid 17326] [client 126.161.11.84:21283] PHP Fatal error:  Call to undefined function curl_init() in /mnt/xvdf/home/nanbu/public_html/zoom/rcvauth.php on line 11

と出たので、


$ sudo apt install php5-curl

として


$ sudo /etc/init.d/apache2 reload

apt install php5-curl
Reading package lists... Done

とすると動作して、以下のトークンが得られました。


{
"access_token":"eyJzPxX6VHZhmZqwoC-KrXn  〜(中略)〜  4J7V9fCJQJo9tGYkN4KQ",
"token_type":"bearer",
"refresh_token":"eyJhbGciOiJIUzUxMiIsIn  〜(中略)〜  RvVUozvhfayLsy0F1Tsw",
"expires_in":3599,
"scope":"chat_message:read"
}

ここで得られたトークンを

「Zoom APIを試してみる JWT編」
https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed

と同じ Python プログラムに適用しました。


import http.client

conn = http.client.HTTPSConnection("api.zoom.us")

headers = {
    'authorization': "Bearer eyJzPxX6VHZhmZqwoC-KrXn  〜(中略)〜  4J7V9fCJQJo9tGYkN4KQ",
    'content-type': "application/json"
    }

conn.request("GET", "/v2/chat/users/me/channels?page_size=30&page_number=1", headers=headers)

res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

これはチャットチャンネルを取得します。

実行すると以下が得られました。


{"total_records":0,"page_size":0}

チャンネルが取得できませんね。meetingを立ち上げて、チャットに適当に書いても、取得データはゼロのまま。あれれ???

In Meeting Chat

ここまでやって気がついた。今までやってきたAPIの示す Chat とは、これらしい。

image.png

image.png

image.png

ミーティングでやっているチャットは、「In Meeting Chat」と呼ばれていて別物であるというのをようやく理解した。

「ミーティング内チャット - Zoom ヘルプセンター」
https://support.zoom.us/hc/ja/articles/203650445-%E3%83%9F%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E5%86%85%E3%83%81%E3%83%A3%E3%83%83%E3%83%88

SDK

In Meeting Chat をコントロールするには SDK を使うとできるらしい。

ZOOM Windows SDK: IMeetingChatCtrlEvent Class Reference
https://zoom.github.io/zoom-sdk-windows/class_i_meeting_chat_ctrl_event.html

Macsdk in-meeting chat interfaces? - macOS - Zoom Developer Forum
https://devforum.zoom.us/t/macsdk-in-meeting-chat-interfaces/9142

ということで OAuth へのチャレンジはここまで。機会があれば SDK をチャレンジしてみます。

24
19
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
24
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?