Preface
WeChat web page authorization is divided into two methods: snsapi_base and snsapi_userinfo. snsapi_base needs to follow the public account, and the user authorization interface will not pop up when obtaining user information. snsapi_userinfo is used when the user browses the page without following the official account. A user authorization interface will pop up first, and the user information can only be obtained after the user authorizes it. In this article, we first look at the snsapi_base implementation.
Note when stepping on pitfalls
When I first started debugging in snsapi_base mode, when I clicked on the page address, it prompted that the address link was unavailable. The web page authorization needs to be done first. Set the basic information for web page authorization in the official account, that is, set the domain name.
Clearly distinguish between global access_token and web page authorization access_token
public ActionResult OAuthSnsApiBase() { string code = Request.QueryString["code"]; try { if (!string.IsNullOrEmpty(code)) { OAuthToken oauthToken = HttpUtility.Get<OAuthToken> (string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appID, appsecret, code)); string accesstoken = string.Empty; AccessToken token = HttpUtility.Get<AccessToken>(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appID,appsecret)); if (token != null && !string.IsNullOrEmpty(token.access_token)) { accesstoken = token.access_token; } if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid)) { OAuthUserInfo userInfo = HttpUtility.Get<OAuthUserInfo>(string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", accesstoken, oauthToken.openid)); if (userInfo != null) { ViewData["headImage"] = userInfo.headimgurl; ViewData["openid"] = userInfo.openid; ViewData["nickName"] = userInfo.nickname; if (userInfo.sex == 0) { ViewData["sex"] = "未知"; } else if (userInfo.sex == 1) { ViewData["sex"] = "男"; } else { ViewData["sex"] = "女"; } ViewData["province"] = userInfo.province; ViewData["city"] = userInfo.city; } else { } } else { } } else { return Redirect(string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=123456 #wechat_redirect", appID,"http://"+Request.Url.Host + Url.Action("OAuthSnsApiBase"))); } } catch (Exception ex) { ViewData["errmsg"] = ex.Message; } return View(); }
public class OAuthToken { public string access_token { get; set; } public int expires_in { get; set; } public string refresh_token { get; set; } public string openid { get; set; } public string scope { get; set; } } public class AccessToken { public string access_token { get; set; } public int expires_in { get; set; } }public class OAuthUserInfo { public string openid { get; set; } public string nickname { get; set; } public int sex { get; set; } public string province { get; set; } public string city { get; set; } public string country { get; set; } public string headimgurl { get; set; } public string privilege { get; set; } public string unionid { get; set; } }
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang= zh_CN. It is different from the web page authorization 2 to obtain the user interface.
## All codes are uploaded to github: https://github.com /garfieldzf8/WeChat
Reference
http://www.cnblogs.com/txw1958/p/weixin76-user-info.html
The above is the content of C# WeChat public account development - web page authorization (oauth2.0) to obtain user basic information. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!