This commit is contained in:
wyh 2021-11-19 11:13:41 +08:00
parent 476e0fe4a2
commit 36d97c097e
3 changed files with 47 additions and 25 deletions

View File

@ -9,6 +9,26 @@ import (
type SnsUserInfoResponse struct {
OAPIResponse
Userid string
Name string
Mobile string
Tel string
Remark string
Order int
IsAdmin bool
IsBoss bool
IsLeader bool
Active bool
Department []int
Position string
Email string
OrgEmail string
Avatar string
Extattr interface{}
}
type SnsUserResponse struct {
OAPIResponse
CorpInfo []struct {
CorpName string `json:"corp_name"`
@ -27,24 +47,28 @@ type SnsUserInfoResponse struct {
}
//SnsUserInfo 获取用户授权的个人信息详情
func (c *DingTalkClient) SnsUserInfo(code string) (SnsUserInfoResponse, error) {
ts := strconv.FormatInt(time.Now().UnixNano()/1000000, 10)
func (c *DingTalkClient) SnsUserInfo(unionid string) (*SnsUserInfoResponse, error) {
var udata struct {
OAPIResponse
UserID string `json:"userid"`
}
uparams := url.Values{}
uparams.Add("unionid", unionid)
err := c.httpRPC("user/getUseridByUnionid", uparams, nil, &udata)
if err != nil {
return nil, err
}
var userdata SnsUserInfoResponse
params := url.Values{}
params.Add("accessKey", c.AppKey)
params.Add("timestamp", ts)
params.Add("signature", encodeSHA256(ts, c.AppSecret))
params.Add("userid", udata.UserID)
err = c.httpRPC("user/get", params, nil, &userdata)
return &userdata, err
body := struct {
Code string `json:"tmp_auth_code"`
}{code}
var data SnsUserInfoResponse
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
return data, err
}
//SnsUser 获取用户授权的个人信息
func (c *DingTalkClient) SnsUser(code string) (SnsUserInfoResponse, error) {
func (c *DingTalkClient) SnsUser(code string) (SnsUserResponse, error) {
ts := strconv.FormatInt(time.Now().UnixNano()/1000000, 10)
params := url.Values{}
params.Add("accessKey", c.AppKey)
@ -55,7 +79,7 @@ func (c *DingTalkClient) SnsUser(code string) (SnsUserInfoResponse, error) {
Code string `json:"tmp_auth_code"`
}{code}
var data SnsUserInfoResponse
var data SnsUserResponse
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
return data, err
}

View File

@ -6,9 +6,17 @@ import (
)
func TestSnsUserInfo(t *testing.T) {
userinfo, err := c.SnsUserInfo("f9f9ba22256136f29a7fb3dd5d26c24c")
userinfo, err := c.SnsUserInfo("rCn0WRcRdrnWRBsDyWEQKwiEiE")
if err != nil {
t.Fatal(err.Error())
}
fmt.Println(userinfo)
}
func TestSnsUser(t *testing.T) {
user, err := c.SnsUser("89f253f7c25333878f27d66f5f0f7bc9")
if err != nil {
t.Fatal(err.Error())
}
fmt.Println(user)
}

10
go.mod
View File

@ -1,13 +1,3 @@
module myschools.me/suguo/godingtalk
go 1.13
require (
github.com/google/go-github v17.0.0+incompatible
github.com/google/go-querystring v1.0.0 // indirect
github.com/ipandtcp/godingtalk v0.0.0-20180410032244-ca3d6ac197fb
golang.org/x/net v0.0.0-20190603091049-60506f45cf65
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
google.golang.org/api v0.10.0
google.golang.org/appengine v1.6.4
)