Class: OmniAuth::Dingtalk::Client::Base
  
  
  
  
  
    - Inherits:
 
    - 
      OAuth2::Client
      
        
          - Object
 
          
            - OAuth2::Client
 
          
            - OmniAuth::Dingtalk::Client::Base
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/omniauth-dingtalk/client/base.rb
 
  
  
 
  
    
      Constant Summary
      collapse
    
    
      
        - AUTHORIZE_URL =
          
        
 
        {
  'qrcode' => '/connect/qrconnect',
  'account' => '/connect/oauth2/sns_authorize'
}.freeze 
      
        - GET_USER_INFO_BY_CODE_URL =
          
        
 
        '/sns/getuserinfo_bycode'
 
      
        - GET_USER_ID_BY_UNIONID_URL =
          
        
 
        '/topapi/user/getbyunionid'
 
      
        - GET_USER_INFO_BY_ID_URL =
          
        
 
        '/topapi/v2/user/get'
 
      
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  Constructor Details
  
    
  
  
    #initialize(client_id, client_secret, options = {}, &block)  ⇒ Base 
  
  
  
  
    
Returns a new instance of Base.
   
 
  
  
    
      
21
22
23
24
25
26
27
28
29 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 21
def initialize(client_id, client_secret, options = {}, &block)
  opts = {
    authorize_url: AUTHORIZE_URL.fetch(options[:authorize_method].to_s, AUTHORIZE_URL['qrcode']),
    token_url: token_url,
    token_method: :get
  }.merge(options)
  super(client_id, client_secret, opts, &block)
end
     | 
  
 
  
 
  
    Instance Method Details
    
      
  
  
    #get_token(params, access_token_opts = {}, extract_access_token = options[:extract_access_token])  ⇒ Object 
  
  
  
  
    
      
72
73
74 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 72
def get_token(params, access_token_opts = {},  = options[:extract_access_token])
  super(token_params.merge(params), access_token_opts, )
end
     | 
  
 
    
      
  
  
    #get_user_id_by_unionid(access_token, unionid)  ⇒ Object 
  
  
  
  
    
      
44
45
46
47
48
49
50 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 44
def get_user_id_by_unionid(access_token, unionid)
  request(:post, GET_USER_ID_BY_UNIONID_URL,
    headers: { 'Content-Type' => 'application/json' },
    body: { unionid: unionid }.to_json,
    params: { access_token: access_token }
  ).parsed
end
     | 
  
 
    
      
  
  
    #get_user_info(params = {})  ⇒ Object 
  
  
  
  
    
      
60
61
62 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 60
def get_user_info(params = {})
  raise NotImplementedError
end
     | 
  
 
    
      
  
  
    #get_user_info_by_code(code)  ⇒ Object 
  
  
  
  
    
      
31
32
33
34
35
36
37
38
39
40
41
42 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 31
def get_user_info_by_code(code)
  t = (Time.now.to_f * 1000).to_i.to_s
  raw_sign = Base64.encode64(OpenSSL::HMAC.digest('SHA256', secret, t)).strip
  sign = CGI.escape(raw_sign)
  url = "#{GET_USER_INFO_BY_CODE_URL}?accessKey=#{id}×tamp=#{t}&signature=#{sign}"
  request(:post, url,
    headers: { 'Content-Type' => 'application/json' },
    body: { tmp_auth_code: code }.to_json
  ).parsed
end
     | 
  
 
    
      
  
  
    #get_user_info_by_id(access_token, id)  ⇒ Object 
  
  
  
  
    
      
52
53
54
55
56
57
58 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 52
def get_user_info_by_id(access_token, id)
  request(:post, GET_USER_INFO_BY_ID_URL,
    headers: { 'Content-Type' => 'application/json' },
    body: { userid: id }.to_json,
    params: { access_token: access_token }
  ).parsed
end
     | 
  
 
    
      
  
  
    #token_params  ⇒ Object 
  
  
  
  
    
      
68
69
70 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 68
def token_params
  { appid: id, appsecret: secret }
end
     | 
  
 
    
      
  
  
    #token_url  ⇒ Object 
  
  
  
  
    
      
64
65
66 
     | 
    
      # File 'lib/omniauth-dingtalk/client/base.rb', line 64
def token_url
  self.class.const_get(:TOKEN_URL) rescue nil
end 
     |