forked from suguo/godingtalk
96 lines
2.1 KiB
Go
96 lines
2.1 KiB
Go
//普通钉钉用户账号开放相关接口
|
|
package godingtalk
|
|
|
|
import (
|
|
"net/url"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
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"`
|
|
IsAuth bool `json:"is_auth"`
|
|
IsManager bool `json:"is_manager"`
|
|
RightsLevel int `json:"rights_level"`
|
|
} `json:"corp_info"`
|
|
|
|
UserInfo struct {
|
|
MaskedMobile string `json:"marskedMobile"`
|
|
Nick string `json:"nick"`
|
|
OpenID string `json:"openid"`
|
|
UnionID string `json:"unionid"`
|
|
DingID string `json:"dingId"`
|
|
} `json:"user_info"`
|
|
}
|
|
|
|
//SnsUserInfo 获取用户授权的个人信息详情
|
|
func (c *DingTalkClient) SnsUserInfo(userid string) (*SnsUserInfoResponse, error) {
|
|
|
|
var data SnsUserInfoResponse
|
|
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) (SnsUserResponse, 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 SnsUserResponse
|
|
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
|
|
return data, err
|
|
}
|