C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一
前言
微信网页授权共分为两种方式:snsapi_base、snsapi_userinfo。 snsapi_base需要关注公众号,获取用户信息时不弹出用户授权界面。 snsapi_userinfo是在用户未关注公众号的情况下浏览页面,会先弹出一个用户授权界面,用户授权后才能拿到用户信息。这一篇我们先看snsapi_base实现。
踩坑注意
刚开始我调试时snsapi_base方式,点击页面地址时提示地址链接不可用,网页授权需要先在公众号里设置网页授权基本信息,也就是设置域名。
区分清楚全局access_token和网页授权access_token


这里注意只填写到域名
看效果
这里看我们通过oauth snsapi_base已经拿到用户的基本信息,对于一般咨询类的开发也就够用了。

看思路
1、通过回掉地址先拿到code。
2、通过code拿到openid。
3、通过appid和appsecret拿到全局access_token(这一点区别于snsapi_userinfo)。
4、通过全局access_token和openid拿到用户信息。
看代码
到这里也就简单了,主要是get方式调微信接口,同时准备好你的get和post请求方式,返回参数用json转化成实体类。
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();
}</oauthuserinfo></accesstoken></oauthtoken>
# 宋体
# 也就
# 弹出
# 这一
# 是在
# 相关内容
# 两种
# 用了
# 中文网
# 看我
# 解决问题
# 刚开始
# 写到
# 后才
# 先在
# 先看
# 不可用
# 会先
# 转化成
# 浏览过
相关栏目:
【
网站优化84359 】
【
站长学院75356 】
【
运营推广7218 】
【
小程序18188 】
【
运维技术36808 】
【
营销推广32536 】
【
SEO优化41416 】
【
百度推广27695 】
【
AI推广83940 】
相关推荐:
Go 框架如何解决跨平台兼容性问题?
双引号是否过多,这就是问题所在!
手把手带你在小程序中怎么实现3d裸眼轮播效果
利用Taro + Vue3如何开发小程序?(实践)
浅谈怎么使用小程序实现一个变速大转盘
Android中微信小程序支付倒计时功能
总结关于Referer丢失的问题(微信H5支付)
互联网那些卖一天赚一年的产品(上篇)(派代网)
微信开发者平台小程序怎么开发
如何使用wrk2对golang框架进行性能测试?
unordered_map
C++ 函数的定义和具体用法
streamlit怎么改机器人头像
C++ 自身函数未来的发展趋势如何?
微信小程序中的button按钮宽度设置无效怎么办
聊聊怎么利用小程序生成海报(插件推荐)
【分享阅读】学习Python基础书籍——快速易懂
浅谈小程序怎么实现列表滚动上下联动效果
PHP 函数如何获取匿名函数参数?
unordered_map底层数据结构
PHP 函数如何处理 PHP 8 中引入的错误处理?
聊聊小程序与App间怎么进行跳转
微信8.0状态视频怎么设置
订阅号跟小程序的区别是什么
memset函数原型
printf格式什么意思
王双雄:微商怎么做视频营销?
golang框架如何与安全团队协作?
微信小程序 教程之注册页面
PHP 函数分类的常见陷阱和解决方案
C++ 函数参数传递中异常处理机制是如何设计的?
一个手机号可以注册几个微信号
unordered_map是什么
C++ 函数的单元测试与覆盖率
C++ 函数中默认参数与可变参数的使用
【派代&生意参谋电商论剑征文大赛】重磅!不看江湖地位,只论技法高下,等你来战!
微信小程序 限制1M的瘦身技巧与方法详解
微信小程序有哪几个特点
浅谈微信小程序搭建后台的具体步骤
streamlit怎么导入ai照片
printf输出双精度格式
怎们实现微信小程序拨号功能
寻洲:微商警戒线,你知道几个?()
streamlit怎么运行 streamlit中文教程
微信小程序 教程之模板
微信公众平台开发--表情符号
golang框架的安全性考虑:如何防止缓存中毒攻击?
小程序开发怎么实现视频上传功能
怎么将小程序分享到朋友圈
输出函数printf的一般格式

上一篇
