質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1018閲覧

RubyでzoomのAPIを使って通話したい。

shimazu

総合スコア38

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2018/09/23 08:52

編集2018/09/24 11:35

やりたいこと

rubyを使ってzoom APIで通話できるとこまでやりたい(がweb関係の知識がない)。

つまり、この内容のRuby版
http://r9.hateblo.jp/entry/2018/01/30/081534

とりあえず、やったことや参考になりそうなことは以下にまとめています。
https://qiita.com/simanezumi1989/items/f990871168fff11d509d

現在、以下のコードをrails cで実行しJWTを生成しました。

ruby

1module ApplicationHelper 2 class TS_Zoom 3 def GenerateJWT 4 payload = { 5 iss: 'api_key', #api_key 6 exp: Time.now.to_i + 4 * 3600 7 } 8 secret = 'secret_key' #secret_key 9 token = JWT.encode payload, secret, 'HS256' 10 return token 11 end 12 end 13end

ターミナルで
curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users
を実行すれば、ユーザ情報の取得はできました。
ここから通話するまでどうすればいいのでしょうか?
参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。

追記

教えていただいた 'net/http' でしたのコードを実行してみたところ、うまくいきました。

ruby

1require 'net/https' 2require 'net/http' 3require 'uri' 4require 'json' 5 6module ApplicationHelper 7 class TS_Zoom 8 def initialize 9 @api_key = "aaa" 10 @secret = "bbb" 11 @user_id = "ccc" 12 @jwt = "ddd" 13 @meeting_url = "ddd" 14 end 15 def GenerateJWT 16 payload = { 17 iss: @api_key, 18 exp: Time.now.to_i + 4 * 36000 19 } 20 token = JWT.encode payload, @secret, 'HS256' 21 return token 22 end 23 24 def GetUserData(_token) 25 uri = URI.parse("https://api.zoom.us/v2/users") 26 request = Net::HTTP::Get.new(uri) 27 request["Authorization"] = "Bearer "+_token 28 req_options = { 29 use_ssl: uri.scheme == "https", 30 } 31 response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| 32 http.request(request) 33 end 34 result = JSON.parse(response.body) 35 return result["users"][0]["id"].to_s 36 end 37 38 def GetMeetingURL 39 @jwt = self.GenerateJWT 40 @user_id = self.GetUserData(@jwt) 41 @meeting_url = "https://api.zoom.us/v2/users/#{@user_id}/meetings" 42 43 uri = URI.parse(@meeting_url) 44 http = Net::HTTP.new(uri.host, uri.port) 45 46 http.use_ssl = true 47 http.verify_mode = OpenSSL::SSL::VERIFY_NONE 48 49 req = Net::HTTP::Post.new(uri.path) 50 req["Authorization"] = "Bearer #{@jwt}" 51 aa = "Bearer #{@jwt}" 52 puts aa 53 req["Content-Type"] = "application/json" 54 req.body = { 55 "type":1, 56 }.to_json 57 res = http.request(req) 58 puts res.class 59 puts res.code 60 puts res.body 61 return res 62 end 63 end 64end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Ruby からリクエストするには、net/http を使うことが多いと思います。

また、curl-to-ruby というcurl のパラメータを net/http のサンプルプログラムに変換してくれるサイトもあるようです。

投稿2018/09/24 04:36

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shimazu

2018/09/24 10:41

ありがとうございます。 早速 net/httpを使ってみたのですが、追記に書いたようにうまくいきません。
shimazu

2018/09/24 11:35

headerとpayloadがわかっていませんでした。 修正すればうまくいきました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問