diff --git a/platformapi/weixinapi/cgibin.go b/platformapi/weixinapi/cgibin.go index 24f059fc..1814a00b 100644 --- a/platformapi/weixinapi/cgibin.go +++ b/platformapi/weixinapi/cgibin.go @@ -6,6 +6,25 @@ const ( MaxRemarkByteCount = 30 ) +type CBUserInfo struct { + Subscribe int `json:"subscribe"` + OpenID string `json:"openid"` + Nickname string `json:"nickname"` + Sex int `json:"sex"` + Language string `json:"language"` + City string `json:"city"` + Province string `json:"province"` + Country string `json:"country"` + HeadImgURL string `json:"headimgurl"` + SubscribeTime int64 `json:"subscribe_time"` + UnionID string `json:"unionid"` + Remark string `json:"remark"` + TagIDList []int `json:"tagid_list"` + SubscribeScene string `json:"subscribe_scene"` + QRScene int `json:"qr_scene"` + QRSceneStr string `json:"qr_scene_str"` +} + func (a *API) CBSetToken(newToken string) bool { curToken := a.CBGetToken() if curToken != newToken { @@ -62,3 +81,15 @@ func (a *API) CBUpdateRemark(userOpenID, remark string) (err error) { _, err = a.AccessAPI("cgi-bin/user/info/updateremark", nil, string(utils.MustMarshal(bodyJson))) return err } + +func (a *API) CBGetUserInfo(userOpenID string) (userInfo *CBUserInfo, err error) { + bodyJson := map[string]interface{}{ + "openid": userOpenID, + "lang": "zh_CN", + } + result, err := a.AccessAPI("cgi-bin/user/info", bodyJson, "") + if err == nil { + err = utils.Map2StructByJson(result, &userInfo, false) + } + return userInfo, err +} diff --git a/platformapi/weixinapi/cgibin_test.go b/platformapi/weixinapi/cgibin_test.go index 94822abb..bb381f14 100644 --- a/platformapi/weixinapi/cgibin_test.go +++ b/platformapi/weixinapi/cgibin_test.go @@ -1,6 +1,10 @@ package weixinapi -import "testing" +import ( + "testing" + + "git.rosy.net.cn/baseapi/utils" +) func TestCBRetrieveToken(t *testing.T) { result, err := api.CBRetrieveToken() @@ -38,3 +42,11 @@ func TestCBUpdateRemark(t *testing.T) { t.Log(err) } } + +func TestCBGetUserInfo(t *testing.T) { + userInfo, err := api.CBGetUserInfo("oYN_ust9hXKEvEv0X6Mq6nlAWs_E") + if err != nil { + t.Fatal(err) + } + t.Log(utils.Format4Output(userInfo, false)) +} diff --git a/platformapi/weixinapi/sns.go b/platformapi/weixinapi/sns.go index 19f8bc5d..c45ccc18 100644 --- a/platformapi/weixinapi/sns.go +++ b/platformapi/weixinapi/sns.go @@ -6,6 +6,32 @@ import ( "git.rosy.net.cn/baseapi/utils" ) +type SNSTokenInfo struct { + AccessToken string `json:"access_token"` + ExpiresIn int `json:"expires_in"` + RefreshToken string `json:"refresh_token"` + OpenID string `json:"openid"` + Scope string `json:"scope"` +} + +type SNSUserInfo struct { + OpenID string `json:"openid"` + NickName string `json:"nickname"` + Sex int `json:"sex"` + Province string `json:"province"` + City string `json:"city"` + Country string `json:"country"` + HeadImgURL string `json:"headimgurl"` + Privilege interface{} `json:"privilege"` + UnionID string `json:"unionid"` +} + +type SessionInfo struct { + OpenID string `json:"openid"` + SessionKey string `json:"session_key"` + UnionID string `json:"unionid"` +} + func mapData2SNSToken(result map[string]interface{}) *SNSTokenInfo { return &SNSTokenInfo{ AccessToken: utils.Interface2String(result["access_token"]), diff --git a/platformapi/weixinapi/weixinapi.go b/platformapi/weixinapi/weixinapi.go index bf869b11..1aea54e9 100644 --- a/platformapi/weixinapi/weixinapi.go +++ b/platformapi/weixinapi/weixinapi.go @@ -40,32 +40,6 @@ type API struct { msgKey string } -type SNSTokenInfo struct { - AccessToken string `json:"access_token"` - ExpiresIn int `json:"expires_in"` - RefreshToken string `json:"refresh_token"` - OpenID string `json:"openid"` - Scope string `json:"scope"` -} - -type SNSUserInfo struct { - OpenID string `json:"openid"` - NickName string `json:"nickname"` - Sex int `json:"sex"` - Province string `json:"province"` - City string `json:"city"` - Country string `json:"country"` - HeadImgURL string `json:"headimgurl"` - Privilege interface{} `json:"privilege"` - UnionID string `json:"unionid"` -} - -type SessionInfo struct { - OpenID string `json:"openid"` - SessionKey string `json:"session_key"` - UnionID string `json:"unionid"` -} - func New(appID, secret string, config ...*platformapi.APIConfig) *API { curConfig := platformapi.DefAPIConfig if len(config) > 0 {