From 36d97c097ef37282aeb5be5ec40b659f105363e3 Mon Sep 17 00:00:00 2001 From: wyhwyhwyh <573805736@qq.com> Date: Fri, 19 Nov 2021 11:13:41 +0800 Subject: [PATCH] edit --- api_sns.go | 52 ++++++++++++++++++++++++++++++++++++------------- api_sns_test.go | 10 +++++++++- go.mod | 10 ---------- 3 files changed, 47 insertions(+), 25 deletions(-) diff --git a/api_sns.go b/api_sns.go index 28478d3..d096f40 100644 --- a/api_sns.go +++ b/api_sns.go @@ -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 } diff --git a/api_sns_test.go b/api_sns_test.go index 04793a4..0f18b00 100644 --- a/api_sns_test.go +++ b/api_sns_test.go @@ -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) +} diff --git a/go.mod b/go.mod index cd5bfbc..6d799e1 100644 --- a/go.mod +++ b/go.mod @@ -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 -)