Commit dd0243ea493b1a20e7cdd2ace302461de102fd6b
1 parent
75a22fe1
Exists in
master
Add dingtalk sns apis
Showing
1 changed file
with
42 additions
and
1 deletions
Show diff stats
lib/dingtalk/api/sns.rb
1 | 1 | module Dingtalk |
2 | 2 | module Api |
3 | - class Sns | |
3 | + class Sns < Base | |
4 | + ACCESS_TOKEN = "sns_access_token" | |
5 | + | |
4 | 6 | def initialize |
5 | 7 | @app_id = Dingtalk.sns_app_id |
6 | 8 | @app_secret = Dingtalk.sns_app_secret |
7 | 9 | end |
10 | + | |
11 | + def access_token | |
12 | + token = redis.get(ACCESS_TOKEN) | |
13 | + token.to_s.empty? ? set_access_token : token | |
14 | + end | |
15 | + | |
16 | + def set_access_token | |
17 | + res = http_get("gettoken?appid=#{@app_id}&appsecret=#{@app_secret}") | |
18 | + redis.set(ACCESS_TOKEN, res['access_token']) | |
19 | + redis.expire(key, 7200) | |
20 | + redis.get(ACCESS_TOKEN) | |
21 | + end | |
22 | + | |
23 | + def get_persistent_code(code) | |
24 | + params = { tmp_auth_code: code } | |
25 | + http_post("get_persistent_code?access_token=#{access_token}", params) | |
26 | + end | |
27 | + | |
28 | + def get_sns_token(openid, persistent_code) | |
29 | + params = { | |
30 | + openid: openid, | |
31 | + persistent_code: persistent_code | |
32 | + } | |
33 | + | |
34 | + http_post("get_sns_token?access_token=#{access_token}", params) | |
35 | + end | |
36 | + | |
37 | + def get_user_info(sns_token) | |
38 | + http_get("getuserinfo?sns_token=#{sns_token}") | |
39 | + end | |
40 | + | |
41 | + private | |
42 | + def default_params | |
43 | + {} | |
44 | + end | |
45 | + | |
46 | + def base_url | |
47 | + 'sns' | |
48 | + end | |
8 | 49 | end |
9 | 50 | end |
10 | 51 | end | ... | ... |