やりたいこと
rubyを使ってzoom APIで通話できるとこまでやりたい(がweb関係の知識がない)。
つまり、この内容のRuby版
http://r9.hateblo.jp/entry/2018/01/30/081534
とりあえず、やったことや参考になりそうなことは以下にまとめています。
https://qiita.com/simanezumi1989/items/f990871168fff11d509d
現在、以下のコードをrails cで実行しJWTを生成しました。
module ApplicationHelper
class TS_Zoom
def GenerateJWT
payload = {
iss: 'api_key', #api_key
exp: Time.now.to_i + 4 * 3600
}
secret = 'secret_key' #secret_key
token = JWT.encode payload, secret, 'HS256'
return token
end
end
end
ターミナルで
curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users
を実行すれば、ユーザ情報の取得はできました。
ここから通話するまでどうすればいいのでしょうか?
参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。
追記
教えていただいた 'net/http' でしたのコードを実行してみたところ、うまくいきました。
require 'net/https'
require 'net/http'
require 'uri'
require 'json'
module ApplicationHelper
class TS_Zoom
def initialize
@api_key = "aaa"
@secret = "bbb"
@user_id = "ccc"
@jwt = "ddd"
@meeting_url = "ddd"
end
def GenerateJWT
payload = {
iss: @api_key,
exp: Time.now.to_i + 4 * 36000
}
token = JWT.encode payload, @secret, 'HS256'
return token
end
def GetUserData(_token)
uri = URI.parse("https://api.zoom.us/v2/users")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer "+_token
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
result = JSON.parse(response.body)
return result["users"][0]["id"].to_s
end
def GetMeetingURL
@jwt = self.GenerateJWT
@user_id = self.GetUserData(@jwt)
@meeting_url = "https://api.zoom.us/v2/users/#{@user_id}/meetings"
uri = URI.parse(@meeting_url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
req = Net::HTTP::Post.new(uri.path)
req["Authorization"] = "Bearer #{@jwt}"
aa = "Bearer #{@jwt}"
puts aa
req["Content-Type"] = "application/json"
req.body = {
"type":1,
}.to_json
res = http.request(req)
puts res.class
puts res.code
puts res.body
return res
end
end
end
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
Ruby からリクエストするには、net/http を使うことが多いと思います。
また、curl-to-ruby というcurl のパラメータを net/http のサンプルプログラムに変換してくれるサイトもあるようです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/09/24 19:41
早速 net/httpを使ってみたのですが、追記に書いたようにうまくいきません。
2018/09/24 20:35
修正すればうまくいきました。ありがとうございます。