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

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

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

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

Ruby on Rails

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

解決済

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

shimazu
shimazu

総合スコア0

Ruby

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

Ruby on Rails

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

1回答

0評価

2クリップ

24閲覧

投稿2018/09/23 08:52

編集2022/01/12 10:58

やりたいこと

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

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

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

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

ruby

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' でしたのコードを実行してみたところ以下の結果が出て認証できていないようです。JWTは設定しているはずなのですがどうすればいいでしょうか?

Net::HTTPUnauthorized
401
{"code":124,"message":"Access token is required."}
=> #<Net::HTTPUnauthorized 401 Unauthorized readbody=true>

ruby

require 'net/https' require 'uri' require 'json' module ApplicationHelper class TS_Zoom def initialize @api_key = "xxx" @secret = 'yyy' @user_id = "zzz" @JWT = "aaa" @meeting_url = "bbb" 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" puts @JWT puts @user_id puts @meeting_url 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, 'Content-Type' => 'application/json') req.body = { "type":1, "Authorization": "Bearer "+@JWT }.to_json res = http.request(req) puts res.class puts res.code puts res.body return res end end end

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

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

Ruby on Rails

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