中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下:
第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo;
第二步,根据code获取openid和access_token(此处的access_token是通过网页授权code换取的不是我们之前讲的全局的票据),代码:
1 ///2 ///用code换取获取用户信息(包括非关注用户的) 3 /// 4 /// 5 /// 6 /// 回调页面带的code参数 7 ///获取用户信息(json格式) 8 public string GetUserInfo(string Appid, string Appsecret, string Code) 9 {10 string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", Appid, Appsecret, Code);11 string ReText = CommonMethod.WebRequestPostOrGet(url, "");//post/get方法获取信息12 DictionaryDicText = (Dictionary )Jss.DeserializeObject(ReText);13 if (!DicText.ContainsKey("openid"))14 {15 CommonMethod.WriteTxt("获取openid失败,错误码:" + DicText["errcode"].ToString());16 return "";17 }18 else19 {20 System.Web.HttpContext.Current.Session["Oauth_Token"] = DicText["access_token"];21 System.Web.HttpContext.Current.Session.Timeout = 7200;22 return CommonMethod.WebRequestPostOrGet("https://api.weixin.qq.com/sns/userinfo?access_token=" + DicText["access_token"] + "&openid=" + DicText["openid"] + "&lang=zh_CN", "");23 }24 }
方法已经写好,只要传入appid、appsecret、code三个参数就可以返回带用户个人信息的json数据包,格式如下:
{ "openid":" OPENID", " nickname": NICKNAME, "sex":"1", "province":"PROVINCE" "city":"CITY", "country":"COUNTRY", "headimgurl": "", "privilege":[ "PRIVILEGE1" "PRIVILEGE2" ], "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"}
QQ群: