godingtalk/api_sns.go

62 lines
1.6 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"`
}
//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}
var data SnsUserInfoResponse
err := c.httpRequest("sns/getuserinfo_bycode", params, body, &data)
return data, err
}
//SnsUser 获取用户授权的个人信息
func (c *DingTalkClient) SnsUser(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
}