Merge pull request '组件包sns更新SnsUser、SnsUserID测试完成' (#3) from wyh/godingtalk:master into master

Reviewed-on: #3
This commit is contained in:
suguo.yao 2021-11-19 05:30:52 +00:00
commit a40aecaac5
3 changed files with 65 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,38 @@ type SnsUserInfoResponse struct {
}
//SnsUserInfo 获取用户授权的个人信息详情
func (c *DingTalkClient) SnsUserInfo(code string) (SnsUserInfoResponse, error) {
ts := strconv.FormatInt(time.Now().UnixNano()/1000000, 10)
params := url.Values{}
params.Add("accessKey", c.AppKey)
params.Add("timestamp", ts)
params.Add("signature", encodeSHA256(ts, c.AppSecret))
body := struct {
Code string `json:"tmp_auth_code"`
}{code}
func (c *DingTalkClient) SnsUserInfo(userid string) (*SnsUserInfoResponse, error) {
var data SnsUserInfoResponse
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
return data, err
params := url.Values{}
params.Add("userid", userid)
err := c.httpRPC("user/get", params, nil, &data)
if err != nil {
return nil, err
}
return &data, err
}
// SnsUserid 获取用户ID
func (c *DingTalkClient) SnsUserID(unionid string) (*string, error) {
var data struct {
OAPIResponse
UserID string `json:"userid"`
}
params := url.Values{}
params.Add("unionid", unionid)
err := c.httpRPC("user/getUseridByUnionid", params, nil, &data)
if err != nil {
return nil, err
}
return &data.UserID, nil
}
//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 +89,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,25 @@ import (
)
func TestSnsUserInfo(t *testing.T) {
userinfo, err := c.SnsUserInfo("f9f9ba22256136f29a7fb3dd5d26c24c")
userinfo, err := c.SnsUserInfo("351313653629177902")
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)
}
func TestSnsUserID(t *testing.T) {
userid, err := c.SnsUserID("rCn0WRcRdrnWRBsDyWEQKwiEiE")
if err != nil {
t.Fatal(err.Error())
}
fmt.Println(userid)
}

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
)