diff --git a/api_sns.go b/api_sns.go index d096f40..2c690ee 100644 --- a/api_sns.go +++ b/api_sns.go @@ -47,23 +47,33 @@ type SnsUserResponse struct { } //SnsUserInfo 获取用户授权的个人信息详情 -func (c *DingTalkClient) SnsUserInfo(unionid string) (*SnsUserInfoResponse, error) { - var udata struct { +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"` } - uparams := url.Values{} - uparams.Add("unionid", unionid) - err := c.httpRPC("user/getUseridByUnionid", uparams, nil, &udata) + params := url.Values{} + params.Add("unionid", unionid) + err := c.httpRPC("user/getUseridByUnionid", params, nil, &data) if err != nil { return nil, err } - var userdata SnsUserInfoResponse - params := url.Values{} - params.Add("userid", udata.UserID) - err = c.httpRPC("user/get", params, nil, &userdata) - return &userdata, err + return &data.UserID, nil } diff --git a/api_sns_test.go b/api_sns_test.go index 0f18b00..89b4c14 100644 --- a/api_sns_test.go +++ b/api_sns_test.go @@ -6,7 +6,7 @@ import ( ) func TestSnsUserInfo(t *testing.T) { - userinfo, err := c.SnsUserInfo("rCn0WRcRdrnWRBsDyWEQKwiEiE") + userinfo, err := c.SnsUserInfo("351313653629177902") if err != nil { t.Fatal(err.Error()) } @@ -20,3 +20,11 @@ func TestSnsUser(t *testing.T) { } fmt.Println(user) } + +func TestSnsUserID(t *testing.T) { + userid, err := c.SnsUserID("rCn0WRcRdrnWRBsDyWEQKwiEiE") + if err != nil { + t.Fatal(err.Error()) + } + fmt.Println(userid) +}