Class: Rails::Ding::AuthService
- Inherits:
-
Object
- Object
- Rails::Ding::AuthService
- Defined in:
- lib/rails/ding/auth_service.rb
Class Method Summary collapse
- .check(res) ⇒ Object
- .configuration ⇒ Object
- .getAccessToken ⇒ Object
- .getConfig(href) ⇒ Object
- .getTicket(accessToken) ⇒ Object
- .sign(ticket, nonceStr, timeStamp, url) ⇒ Object
Class Method Details
.check(res) ⇒ Object
55 56 57 58 59 |
# File 'lib/rails/ding/auth_service.rb', line 55 def self.check(res) if res["errcode"] != 0 LogService.e("FAIL: #{res.to_json}") end end |
.configuration ⇒ Object
5 6 7 |
# File 'lib/rails/ding/auth_service.rb', line 5 def self.configuration Ding::configuration end |
.getAccessToken ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/rails/ding/auth_service.rb', line 9 def self.getAccessToken # 缓存accessToken。accessToken有效期为两小时,需要在失效前请求新的accessToken(注意:以下代码没有在失效前刷新缓存的accessToken)。 accessToken = CacheService::getCorpAccessToken() if accessToken.blank? response = HttpService.get('/gettoken?', {corpid: configuration.corpid, corpsecret: configuration.secret}) check(response) accessToken = response['access_token'] CacheService::setCorpAccessToken(accessToken) end return accessToken end |
.getConfig(href) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rails/ding/auth_service.rb', line 33 def self.getConfig(href) corpId = configuration.corpid agentId = configuration.agentid nonceStr = 'abcdefg' timeStamp = Time.now.to_i url = href corpAccessToken = getAccessToken() if corpAccessToken.blank? LogService.e("[getConfig] ERR: no corp access token") end ticket = getTicket(corpAccessToken) signature = sign(ticket, nonceStr, timeStamp, url) config = {'url' => url,'nonceStr' => nonceStr,'agentId' => agentId, 'timeStamp' => timeStamp, 'corpId' => corpId, 'signature' => signature} return config end |
.getTicket(accessToken) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rails/ding/auth_service.rb', line 22 def self.getTicket(accessToken) jsticket = CacheService::getJsTicket() if jsticket.blank? response = HttpService.get('/get_jsapi_ticket?', {type: 'jsapi', access_token: accessToken}) check(response) jsticket = response['ticket'] CacheService::setJsTicket(jsticket) end return jsticket end |
.sign(ticket, nonceStr, timeStamp, url) ⇒ Object
50 51 52 53 |
# File 'lib/rails/ding/auth_service.rb', line 50 def self.sign(ticket, nonceStr, timeStamp, url) plain = "jsapi_ticket=#{ticket}&noncestr=#{nonceStr}×tamp=#{timeStamp}&url=#{url}" return Digest::SHA1.hexdigest(plain); end |