「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 の取得
で以下のページを開きます。
「Develop」のボタンを押してメニュー中の「Build App」を押します。
ボタンは画面の横幅がないと出てこないので注意。
今度は OAuth を選びます
アプリ名を入力して「Create」。
「Would you like to publish this app on Zoom App Marketplace?」
は今回はOFFにしました。
OAuth のリダイレクト先を入力します。しかしながらこれだけの入力だと・・・
後述のプログラムを試してみるとエラーが出ました。あれーおかしーなーとおもっていたら
Whitelist URL に Redirect URL for OAuth を含めた値を指定しないといけませんでした。ブラウザ画面キャプチャ用にウィンドウを小さくしすぎて気が付いてませんでしたとさ。
イベントを取得したいので Event Subscriptions を選んで。 Continue。
購読設定に名前を付けます。イベントを受け取るURLと Event types で何のイベントを受け取るかを決めて「Continue」。
(なお、ここで設定はしましたが後述するように今回は使いませんでした)。
リダイレクト元のページを作る
<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認証ページに移ります。
リダイレクト先のページを作る
「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 とは、これらしい。
ミーティングでやっているチャットは、「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 をチャレンジしてみます。