|
@@ -80,3 +80,48 @@ func GetOAuthAccessToken(appID, code string) (*MpOAuthAccessTokenResult, error)
|
80
|
80
|
|
81
|
81
|
return &result, nil
|
82
|
82
|
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+type SnsApiUserInfo struct {
|
|
86
|
+ errors.Error
|
|
87
|
+ OpenID string `json:"openid"`
|
|
88
|
+ NickName string `json:"nickname"`
|
|
89
|
+ Sex string `json:"sex"`
|
|
90
|
+ Province string `json:"province"`
|
|
91
|
+ City string `json:"city"`
|
|
92
|
+ Country string `json:"country"`
|
|
93
|
+ HeadImgURL string `json:"headimgurl"`
|
|
94
|
+ Privilege []string `json:"privilege"`
|
|
95
|
+ UnionID string `json:"unionid"`
|
|
96
|
+}
|
|
97
|
+
|
|
98
|
+const apiSnsUserInfo = "https://api.weixin.qq.com/sns/userinfo"
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+func GetSnsApiUserInfo(accessToken, openID, lang string) (*SnsApiUserInfo, error) {
|
|
102
|
+ if accessToken == "" || openID == "" {
|
|
103
|
+ return nil, errors.New("获取网页授权用户信息 accessToken 或者 openID 不能为空")
|
|
104
|
+ }
|
|
105
|
+
|
|
106
|
+ langStr := lang
|
|
107
|
+ if langStr == "" {
|
|
108
|
+ langStr = "zh_CN"
|
|
109
|
+ }
|
|
110
|
+
|
|
111
|
+ param := url.Values{}
|
|
112
|
+ param.Set("access_token", accessToken)
|
|
113
|
+ param.Set("openid", openID)
|
|
114
|
+ param.Set("lang", langStr)
|
|
115
|
+
|
|
116
|
+ resp, e2 := request.GetJSON(apiOAuthAccessToken, ¶m)
|
|
117
|
+ if e2 != nil {
|
|
118
|
+ return nil, e2
|
|
119
|
+ }
|
|
120
|
+
|
|
121
|
+ result := SnsApiUserInfo{}
|
|
122
|
+ if err := json.Unmarshal(resp, &result); err != nil {
|
|
123
|
+ return nil, err
|
|
124
|
+ }
|
|
125
|
+
|
|
126
|
+ return &result, nil
|
|
127
|
+}
|