teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

問題の解決コード

2018/09/24 11:35

投稿

shimazu
shimazu

スコア38

title CHANGED
File without changes
body CHANGED
@@ -32,27 +32,23 @@
32
32
  参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。
33
33
 
34
34
  # 追記
35
- 教えていただいた 'net/http' でしたのコードを実行してみたところ以下の結果が出て認証できていないよです。JWTは設定してるはずなのですがどうすればいいでょうか?
35
+ 教えていただいた 'net/http' でしたのコードを実行してみたところまくきまた。
36
- >
37
- Net::HTTPUnauthorized
38
- 401
39
- {"code":124,"message":"Access token is required."}
40
- => #<Net::HTTPUnauthorized 401 Unauthorized readbody=true>
41
36
 
42
37
 
43
38
  ```ruby
44
39
  require 'net/https'
40
+ require 'net/http'
45
41
  require 'uri'
46
42
  require 'json'
47
43
 
48
44
  module ApplicationHelper
49
45
  class TS_Zoom
50
46
  def initialize
51
- @api_key = "xxx"
47
+ @api_key = "aaa"
52
- @secret = 'yyy'
48
+ @secret = "bbb"
53
- @user_id = "zzz"
49
+ @user_id = "ccc"
54
- @JWT = "aaa"
50
+ @jwt = "ddd"
55
- @meeting_url = "bbb"
51
+ @meeting_url = "ddd"
56
52
  end
57
53
  def GenerateJWT
58
54
  payload = {
@@ -78,12 +74,9 @@
78
74
  end
79
75
 
80
76
  def GetMeetingURL
81
- @JWT = self.GenerateJWT
77
+ @jwt = self.GenerateJWT
82
- @user_id = self.GetUserData(@JWT)
78
+ @user_id = self.GetUserData(@jwt)
83
- @meeting_url = "https://api.zoom.us/v2/users/" + @user_id + "/meetings"
79
+ @meeting_url = "https://api.zoom.us/v2/users/#{@user_id}/meetings"
84
- puts @JWT
85
- puts @user_id
86
- puts @meeting_url
87
80
 
88
81
  uri = URI.parse(@meeting_url)
89
82
  http = Net::HTTP.new(uri.host, uri.port)
@@ -91,10 +84,13 @@
91
84
  http.use_ssl = true
92
85
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
93
86
 
87
+ req = Net::HTTP::Post.new(uri.path)
88
+ req["Authorization"] = "Bearer #{@jwt}"
89
+ aa = "Bearer #{@jwt}"
90
+ puts aa
94
- req = Net::HTTP::Post.new(uri.path, 'Content-Type' => 'application/json')
91
+ req["Content-Type"] = "application/json"
95
92
  req.body = {
96
93
  "type":1,
97
- "Authorization": "Bearer "+@JWT
98
94
  }.to_json
99
95
  res = http.request(req)
100
96
  puts res.class

4

Rubyでのリクエストコードを追記

2018/09/24 11:35

投稿

shimazu
shimazu

スコア38

title CHANGED
File without changes
body CHANGED
@@ -29,4 +29,79 @@
29
29
  `curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users`
30
30
  を実行すれば、ユーザ情報の取得はできました。
31
31
  ここから通話するまでどうすればいいのでしょうか?
32
- 参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。
32
+ 参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。
33
+
34
+ # 追記
35
+ 教えていただいた 'net/http' でしたのコードを実行してみたところ以下の結果が出て認証できていないようです。JWTは設定しているはずなのですがどうすればいいでしょうか?
36
+ >
37
+ Net::HTTPUnauthorized
38
+ 401
39
+ {"code":124,"message":"Access token is required."}
40
+ => #<Net::HTTPUnauthorized 401 Unauthorized readbody=true>
41
+
42
+
43
+ ```ruby
44
+ require 'net/https'
45
+ require 'uri'
46
+ require 'json'
47
+
48
+ module ApplicationHelper
49
+ class TS_Zoom
50
+ def initialize
51
+ @api_key = "xxx"
52
+ @secret = 'yyy'
53
+ @user_id = "zzz"
54
+ @JWT = "aaa"
55
+ @meeting_url = "bbb"
56
+ end
57
+ def GenerateJWT
58
+ payload = {
59
+ iss: @api_key,
60
+ exp: Time.now.to_i + 4 * 36000
61
+ }
62
+ token = JWT.encode payload, @secret, 'HS256'
63
+ return token
64
+ end
65
+
66
+ def GetUserData(_token)
67
+ uri = URI.parse("https://api.zoom.us/v2/users")
68
+ request = Net::HTTP::Get.new(uri)
69
+ request["Authorization"] = "Bearer "+_token
70
+ req_options = {
71
+ use_ssl: uri.scheme == "https",
72
+ }
73
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
74
+ http.request(request)
75
+ end
76
+ result = JSON.parse(response.body)
77
+ return result["users"][0]["id"].to_s
78
+ end
79
+
80
+ def GetMeetingURL
81
+ @JWT = self.GenerateJWT
82
+ @user_id = self.GetUserData(@JWT)
83
+ @meeting_url = "https://api.zoom.us/v2/users/" + @user_id + "/meetings"
84
+ puts @JWT
85
+ puts @user_id
86
+ puts @meeting_url
87
+
88
+ uri = URI.parse(@meeting_url)
89
+ http = Net::HTTP.new(uri.host, uri.port)
90
+
91
+ http.use_ssl = true
92
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
93
+
94
+ req = Net::HTTP::Post.new(uri.path, 'Content-Type' => 'application/json')
95
+ req.body = {
96
+ "type":1,
97
+ "Authorization": "Bearer "+@JWT
98
+ }.to_json
99
+ res = http.request(req)
100
+ puts res.class
101
+ puts res.code
102
+ puts res.body
103
+ return res
104
+ end
105
+ end
106
+ end
107
+ ```

3

改善

2018/09/24 10:40

投稿

shimazu
shimazu

スコア38

title CHANGED
File without changes
body CHANGED
@@ -25,7 +25,8 @@
25
25
  end
26
26
  ```
27
27
 
28
- そこで、ターミナルで
28
+ ターミナルで
29
- `curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users | jq .`
29
+ `curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users`
30
- を実行したところ、`(23) Failed writing body`と出て、ユーザ情報は得られませんでした。
31
- どうすれば、ユーザ情報られるでしょうか?
30
+ を実行すれば、ユーザ情報の取きまた。
31
+ ここから通話するまでどうすればいいのでしょうか?
32
+ 参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。

2

行ったことの追加

2018/09/24 03:46

投稿

shimazu
shimazu

スコア38

title CHANGED
File without changes
body CHANGED
@@ -5,4 +5,27 @@
5
5
  [http://r9.hateblo.jp/entry/2018/01/30/081534](http://r9.hateblo.jp/entry/2018/01/30/081534)
6
6
 
7
7
  とりあえず、やったことや参考になりそうなことは以下にまとめています。
8
- [https://qiita.com/simanezumi1989/items/f990871168fff11d509d](https://qiita.com/simanezumi1989/items/f990871168fff11d509d)
8
+ [https://qiita.com/simanezumi1989/items/f990871168fff11d509d](https://qiita.com/simanezumi1989/items/f990871168fff11d509d)
9
+
10
+ 現在、以下のコードをrails cで実行しJWTを生成しました。
11
+
12
+ ```ruby
13
+ module ApplicationHelper
14
+ class TS_Zoom
15
+ def GenerateJWT
16
+ payload = {
17
+ iss: 'api_key', #api_key
18
+ exp: Time.now.to_i + 4 * 3600
19
+ }
20
+ secret = 'secret_key' #secret_key
21
+ token = JWT.encode payload, secret, 'HS256'
22
+ return token
23
+ end
24
+ end
25
+ end
26
+ ```
27
+
28
+ そこで、ターミナルで
29
+ `curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users | jq .`
30
+ を実行したところ、`(23) Failed writing body`と出て、ユーザ情報は得られませんでした。
31
+ どうすれば、ユーザ情報が得られるでしょうか?

1

urlのリンク化

2018/09/23 13:00

投稿

shimazu
shimazu

スコア38

title CHANGED
File without changes
body CHANGED
@@ -5,4 +5,4 @@
5
5
  [http://r9.hateblo.jp/entry/2018/01/30/081534](http://r9.hateblo.jp/entry/2018/01/30/081534)
6
6
 
7
7
  とりあえず、やったことや参考になりそうなことは以下にまとめています。
8
- https://qiita.com/simanezumi1989/items/f990871168fff11d509d
8
+ [https://qiita.com/simanezumi1989/items/f990871168fff11d509d](https://qiita.com/simanezumi1989/items/f990871168fff11d509d)