收藏
回答

微信网页登录acess_token获取用户信息,为什么获取到的openid等信息是空的?

//通过access_token获取用户个人信息(UnionID机制)
//http请求方式: GET
//https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
var p2 = url.Values{}
p2.Set("access_token", respToken.AccessToken)
p2.Set("openid", respToken.Openid)

getUserUrl := "https://api.weixin.qq.com/sns/userinfo"
result2, err := url.Parse(getUserUrl + "?" + p.Encode())
resp2, err := client.Get(result2.String())
if err != nil {
   zap.S().Errorf("通过access_token获取用户信息失败%s", err.Error())
   c.JSON(http.StatusInternalServerError, gin.H{"msg": "获取用户信息失败"})
   return
}
defer func(Body io.ReadCloser) {
   _ = Body.Close()
}(resp2.Body)
fmt.Println("返回数据", resp2.Body)
//读取返回数据
body2, err := ioutil.ReadAll(resp2.Body)
if err != nil {
   zap.S().Errorf("读取返回UserInfo的数据失败%s", err.Error())
   c.JSON(http.StatusInternalServerError, gin.H{"msg": "获取用户信息失败,请重试"})
   return
}
wxUser := form.WxUserInfo{
   Privilege: make([]string, 0),
}
err = json.Unmarshal(body2, &wxUser)
if err != nil {
   zap.S().Errorf("解析返回userInfo的数据失败%s", err.Error())
   c.JSON(http.StatusInternalServerError, gin.H{"msg": "获取用户信息失败,请重试"})
   return
}
userInfo := model.User{
   WxOpenId:  wxUser.OpenId,
   Nickname:  wxUser.Nickname,
   Gender:    strconv.Itoa(wxUser.Sex),
   Province:  wxUser.Province,
   City:      wxUser.City,
   AvatarURL: wxUser.HeadImageUrl,
   WxUnionid: wxUser.Unionid,
}

返回数据 &{0xc0003d7f80 {0 0} false <nil> 0x7c32e0 0x7c33e0}

用户信息:openid 

用户信息:Nickname 

用户信息:Gender 0

用户信息:Province 

用户信息:City 

用户信息:AvatarURL 


回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容