C#微信公众号开发--网页授权(oauth2.0)获取用户…
2018-06-22 07:43:56来源:未知 阅读 ()
前言
这一篇实现snsapi_userinfo,写这篇时其实我是有疑惑的,因为我并没有调试成功,但是我反复检查程序和思路是没有问题的,因为我使用的测试公众号,群里一个伙计说他之前调试时用的也是测试公众号也遇到了和我一样的问题,然后换上正式公众号就好了。而且我再三检查了微信开发文档里,snsapi_userinfo的方式是要比snsapi_base简单的,也很好理解。
我先描述下问题吧,snsapi_userinfo的方式是不需要我们关注公众号的,所以我就在未关注的情下点击页面地址跳转后提示我未关注测试公众号。
实现思路
有了上一篇网页授权获取用户基本信息一的基础,再实现snsapi_userinfo就更快了,一路调接口。
1、先获取code
2、根据code获取网页授权access_token和openid。看了其他人写的博客有的提到了网页授权access_token每天的上限是12次,也就是每两个小时调用一次要自己缓存起来(大多数demo里用Session)。我查了下微信开发文档接口频率限制,正式公众号和测试公众号网页授权access_token和refresh_token调用都是没有上限的。附微信接口限制说明
3、根据access_token和openid获取用户信息。
看代码
public ActionResult OAuthSnsApiUserInfo() { 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)); if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid) && !string.IsNullOrEmpty(oauthToken.access_token)) { OAuthUserInfo userInfo = Get<OAuthUserInfo>(string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", oauthToken.access_token, 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_userinfo&state=123456#wechat_redirect", appID,Server.UrlEncode("http://" + Request.Url.Host + Url.Action("OAuthSnsApiUserInfo")))); } } catch (Exception ex) { ViewData["errmsg"] = ex.Message; } return View(); }
总结
网页授权二里获取用户信息的接口是:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN。
参考
http://www.cnblogs.com/net-xiejun/p/4632711.html
http://www.cnblogs.com/txw1958/p/weixin76-user-info.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- ASP.NET实现进度条效果 2020-03-15
- MVC数据验证详解 2020-03-14
- asp控件和html控件的概念区别 2020-03-09
- .Net MVC网站中配置文件的读写 2020-02-28
- mvc file控件无刷新异步上传操作源码 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash