forked from LLLjjjjjj/work-wechat
/
auth.go
144 lines (130 loc) · 3.73 KB
/
auth.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package work
import (
"context"
"encoding/json"
"errors"
"fmt"
)
type auth struct {
workWechat WorkWechat
SuitAccessToken string
}
func (w WorkWechat) NewAuth() *auth {
return &auth{
workWechat: w,
}
}
// GetPreAuthCode 获取预授权码 https://work.weixin.qq.com/api/doc/90001/90143/90601
func NewGetPreAuthCode(suitAccessToken string) Action {
reqUrl := BaseWeWorkUrl + fmt.Sprintf("/cgi-bin/service/get_pre_auth_code?suite_access_token=%s", suitAccessToken)
return NewWeWordApi(reqUrl,
WitchMethod(HttpGet),
)
}
// GetPermanentCode 获取企业永久授权码 https://work.weixin.qq.com/api/doc/90001/90143/90603
func NewGetPermanentCode(suitAccessToken string, authCode string) Action {
reqUrl := BaseWeWorkUrl + fmt.Sprintf("/cgi-bin/service/get_permanent_code?suite_access_token=%s", suitAccessToken)
return NewWeWordApi(reqUrl,
WitchMethod(HttpPost),
WitchBody(func() (bytes []byte, e error) {
reqInfo := reqGetPermanentCode{
AuthCode: authCode,
}
jsonInfo, err := json.Marshal(reqInfo)
if err != nil {
return nil, err
}
return jsonInfo, nil
}),
)
}
// NewSetSessionInfo 设置授权配置 https://work.weixin.qq.com/api/doc/90001/90143/90602
func NewSetSessionInfo(suitAccessToken string, preAuthCode string, info SessionInfo) Action {
reqUrl := BaseWeWorkUrl + fmt.Sprintf("/cgi-bin/service/set_session_info?suite_access_token=%s", suitAccessToken)
return NewWeWordApi(reqUrl,
WitchMethod(HttpPost),
WitchBody(func() (bytes []byte, e error) {
reqInfo := reqSetSessionInfo{
PreAuthCode: preAuthCode,
SessionInfo: info,
}
jsonInfo, err := json.Marshal(reqInfo)
if err != nil {
return nil, err
}
return jsonInfo, nil
}),
)
}
/**
* @Description: 设置授权配置
* @author:ljj
* @receiver w
* @param preAuthCode string 预授权码
* @param info SessionInfo 设置的授权配置
* @return *RespSetSessionInfo
* @return error
*/
func (a *auth) SetSessionInfo(preAuthCode string, info SessionInfo) (*RespSetSessionInfo, error) {
suiteAccessTokenResp, err := a.workWechat.GetSuiteAccessToken()
if err != nil {
return nil, err
}
suiteAccessToken := suiteAccessTokenResp.SuiteAccessToken
opt := &RespSetSessionInfo{}
err = a.workWechat.Scan(context.Background(), NewSetSessionInfo(suiteAccessToken, preAuthCode, info), opt)
if err != nil {
return nil, err
}
if opt.ErrCode != 0 {
return nil, errors.New("设置授权配置失败")
}
return opt, nil
}
/**
* @Description: 获取企业永久授权码
* @author:ljj
* @receiver w
* @param authCode string 企业授权后请求到回调地址产生的授权码
* @return *RespGetPreAuthCode
* @return error
*/
func (a *auth) GetPermanentCode(authCode string) (*RespGetPermanentCode, error) {
suiteAccessTokenResp, err := a.workWechat.GetSuiteAccessToken()
if err != nil {
return nil, err
}
suiteAccessToken := suiteAccessTokenResp.SuiteAccessToken
opt := &RespGetPermanentCode{}
err = a.workWechat.Scan(context.Background(), NewGetPermanentCode(suiteAccessToken, authCode), opt)
if err != nil {
return nil, err
}
if opt.ErrCode != 0 {
return nil, errors.New("获取永久授权码失败")
}
return opt, nil
}
/**
* @Description: 获取预授权码
* @author:21
* @receiver w
* @return *RespGetPreAuthCode
* @return error
*/
func (a *auth) GetPreAuthCode() (*RespGetPreAuthCode, error) {
suiteAccessTokenResp, err := a.workWechat.GetSuiteAccessToken()
if err != nil {
return nil, err
}
suiteAccessToken := suiteAccessTokenResp.SuiteAccessToken
opt := &RespGetPreAuthCode{}
err = a.workWechat.Scan(context.Background(), NewGetPreAuthCode(suiteAccessToken), opt)
if err != nil {
return nil, err
}
if opt.ErrCode != 0 {
return nil, errors.New("获取预授权码失败")
}
return opt, nil
}