45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
//普通钉钉用户账号开放相关接口
|
|
package godingtalk
|
|
|
|
import (
|
|
"net/url"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type SnsUserInfoResponse 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"`
|
|
}
|
|
|
|
//获取用户授权的个人信息
|
|
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}
|
|
|
|
var data SnsUserInfoResponse
|
|
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
|
|
return data, err
|
|
}
|