質問編集履歴
5
問題の解決コード
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,27 +32,23 @@
|
|
32
32
|
参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。
|
33
33
|
|
34
34
|
# 追記
|
35
|
-
教えていただいた 'net/http' でしたのコードを実行してみたところ
|
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 = "
|
47
|
+
@api_key = "aaa"
|
52
|
-
@secret =
|
48
|
+
@secret = "bbb"
|
53
|
-
@user_id = "
|
49
|
+
@user_id = "ccc"
|
54
|
-
@
|
50
|
+
@jwt = "ddd"
|
55
|
-
@meeting_url = "
|
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
|
-
@
|
77
|
+
@jwt = self.GenerateJWT
|
82
|
-
@user_id = self.GetUserData(@
|
78
|
+
@user_id = self.GetUserData(@jwt)
|
83
|
-
@meeting_url = "https://api.zoom.us/v2/users/
|
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
|
-
|
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でのリクエストコードを追記
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
改善
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
|
29
|
+
`curl -H 'Authorization: Bearer JWTの文字列' https://api.zoom.us/v2/users`
|
30
|
-
を実行したところ、`(23) Failed writing body`と出て、ユーザ情報は得られませんでした。
|
31
|
-
|
30
|
+
を実行すれば、ユーザ情報の取得はできました。
|
31
|
+
ここから通話するまでどうすればいいのでしょうか?
|
32
|
+
参考にしているサイトから察するに、Rubyで curlを叩く方法がわかれば行けると思います。
|
2
行ったことの追加
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のリンク化
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)
|