组件包sns更新SnsUser、SnsUserID测试完成 #3

Merged
suguo merged 2 commits from wyh/godingtalk:master into master 2021-11-19 05:30:52 +00:00
3 changed files with 65 additions and 25 deletions

View File

@ -9,6 +9,26 @@ import (
type SnsUserInfoResponse struct { type SnsUserInfoResponse struct {
OAPIResponse 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 { CorpInfo []struct {
CorpName string `json:"corp_name"` CorpName string `json:"corp_name"`
@ -27,24 +47,38 @@ type SnsUserInfoResponse struct {
} }
//SnsUserInfo 获取用户授权的个人信息详情 //SnsUserInfo 获取用户授权的个人信息详情
func (c *DingTalkClient) SnsUserInfo(code string) (SnsUserInfoResponse, error) { func (c *DingTalkClient) SnsUserInfo(userid 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}
var data SnsUserInfoResponse var data SnsUserInfoResponse
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data) params := url.Values{}
return data, err 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 获取用户授权的个人信息 //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) ts := strconv.FormatInt(time.Now().UnixNano()/1000000, 10)
params := url.Values{} params := url.Values{}
params.Add("accessKey", c.AppKey) params.Add("accessKey", c.AppKey)
@ -55,7 +89,7 @@ func (c *DingTalkClient) SnsUser(code string) (SnsUserInfoResponse, error) {
Code string `json:"tmp_auth_code"` Code string `json:"tmp_auth_code"`
}{code} }{code}
var data SnsUserInfoResponse var data SnsUserResponse
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data) err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
return data, err return data, err
} }

View File

@ -6,9 +6,25 @@ import (
) )
func TestSnsUserInfo(t *testing.T) { func TestSnsUserInfo(t *testing.T) {
userinfo, err := c.SnsUserInfo("f9f9ba22256136f29a7fb3dd5d26c24c") userinfo, err := c.SnsUserInfo("351313653629177902")
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())
} }
fmt.Println(userinfo) 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 module myschools.me/suguo/godingtalk
go 1.13 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
)