浏览代码

微信获取用户头像

xingzai 3 年之前
父节点
当前提交
b353a269cd
共有 2 个文件被更改,包括 32 次插入1 次删除
  1. 30 1
      controllers/wechat.go
  2. 2 0
      services/wechat.go

+ 30 - 1
controllers/wechat.go

@@ -182,11 +182,40 @@ func (this *WechatCommonController) WechatLogin() {
 		br.ErrMsg = "获取用户信息失败,code:" + strconv.Itoa(wxInfo.ErrCode) + ",msg:" + wxInfo.ErrMSG
 		return
 	}
+	wxToken, err := services.WxGetToken()
+	if err != nil {
+		br.Msg = "获取用户信息失败"
+		br.ErrMsg = "获取access_token失败,err:" + err.Error()
+		return
+	}
+	if wxToken.AccessToken == "" {
+		br.Msg = "获取用户信息失败"
+		br.ErrMsg = "access_token 为空,"
+		return
+	}
+	getWxUserInfo, err := services.WxGetUserInfo(wxInfo.OpenID, wxToken.AccessToken)
+	if err != nil {
+		br.Msg = "获取用户信息失败"
+		br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
+		return
+	}
+	if getWxUserInfo.Errcode != 0 {
+		userInfoJson, _ := json.Marshal(getWxUserInfo)
+		br.Msg = "登录失败"
+		br.ErrMsg = "获取用户信息失败,err:" + string(userInfoJson)
+		return
+	}
 
 	wxUserInfo := new(services.WxUserInfo)
 	wxUserInfo.Unionid = wxInfo.UnionID
 	wxUserInfo.Openid = wxInfo.OpenID
-	wxUserInfo.Unionid = wxInfo.UnionID
+	wxUserInfo.Nickname = getWxUserInfo.Nickname
+	wxUserInfo.Headimgurl = getWxUserInfo.Headimgurl
+	wxUserInfo.City = getWxUserInfo.City
+	wxUserInfo.Province = getWxUserInfo.Province
+	wxUserInfo.Country = getWxUserInfo.Country
+	wxUserInfo.Sex = getWxUserInfo.Sex
+	wxUserInfo.SubscribeScene = getWxUserInfo.SubscribeScene
 	wxUserInfo.Errcode = wxInfo.ErrCode
 	wxUserInfo.Errmsg = wxInfo.ErrMSG
 	wxUserInfo.SessionKey = wxInfo.SessionKey

+ 2 - 0
services/wechat.go

@@ -65,6 +65,7 @@ func WxGetToken() (item *WxToken, err error) {
 	requestUrl = fmt.Sprintf(requestUrl, utils.WxAppId, utils.WxAppSecret)
 	fmt.Println("requestUrl:", requestUrl)
 	result, err := http.Get(requestUrl)
+	utils.FileLog.Info("WxGetToken Result:%s ", string(result))
 	if err != nil {
 		return nil, err
 	}
@@ -98,6 +99,7 @@ func WxGetUserInfo(openId, accessToken string) (item *WxUserInfo, err error) {
 	requestUrl := `https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s`
 	requestUrl = fmt.Sprintf(requestUrl, accessToken, openId)
 	result, err := http.Get(requestUrl)
+	utils.FileLog.Info("WxGetUserInfo Result:%s ", string(result))
 	if err != nil {
 		return
 	}