微信公众号开发网页中如何获取当前用户Openid
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了微信公众号开发网页中如何获取当前用户Openid,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体实现首先,我们定一
千家信息网最后更新 2026年11月01日微信公众号开发网页中如何获取当前用户Openid
这篇文章主要介绍了微信公众号开发网页中如何获取当前用户Openid,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体实现
首先,我们定一个获取openid的方法 ReGetOpenId
public static void ReGetOpenId() { string url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;//获取当前url if (System.Web.HttpContext.Current.Session["openid"] == "" || System.Web.HttpContext.Current.Session["openid"] == null) { //先要判断是否是获取code后跳转过来的 if (System.Web.HttpContext.Current.Request.QueryString["code"] == "" || System.Web.HttpContext.Current.Request.QueryString["code"] == null) { //Code为空时,先获取Code string GetCodeUrls = GetCodeUrl(url); System.Web.HttpContext.Current.Response.Redirect(GetCodeUrls);//先跳转到微信的服务器,取得code后会跳回来这页面的 } else { //Code非空,已经获取了code后跳回来啦,现在重新获取openid Log log = new Log(AppDomain.CurrentDomain.BaseDirectory + @"/log/Log.txt"); string openid = ""; openid = GetOauthAccessOpenId(System.Web.HttpContext.Current.Request.QueryString["Code"]);//重新取得用户的openid System.Web.HttpContext.Current.Session["openid"] = openid; } } }注:url最好是带域名的,花生壳的域名是行不通的,再调微信平台接口的时候,会报链接不正确错误
上文中GetCodeUrl方法如下
#region 重新获取Code的跳转链接(没有用户授权的,只能获取基本信息) ///重新获取Code,以后面实现带着Code重新跳回目标页面(没有用户授权的,只能获取基本信息(openid)) /// 目标页面 ///public static string GetCodeUrl(string url) { string CodeUrl = ""; //对url进行编码 url = System.Web.HttpUtility.UrlEncode(url); CodeUrl = string.Format("https://open.weixin.qq.com/connect/oauth3/authorize?appid=" + Appid + "&redirect_uri=" + url + "?action=viewtest&response_type=code&scope=snsapi_base&state=1#wechat_redirect"); return CodeUrl; } #endregion
上文中 GetOauthAccessOpenId方法如下
#region 以Code换取用户的openid、access_token ///根据Code获取用户的openid、access_token public static string GetOauthAccessOpenId(string code) { Log log = new Log(AppDomain.CurrentDomain.BaseDirectory + @"/log/Log.txt"); string Openid = ""; string url = "https://api.weixin.qq.com/sns/oauth3/access_token?appid=" + Appid + "&secret=" + Secret + "&code=" + code + "&grant_type=authorization_code"; string gethtml = MyHttpHelper.HttpGet(url); log.log("拿到的url是:" + url); log.log("获取到的gethtml是" + gethtml); OAuth_Token ac = new OAuth_Token(); ac = JsonHelper.ToObject(gethtml); log.log("能否从html里拿到openid=" + ac.openid); Openid = ac.openid; return Openid; } #endregion
通过以上方法即可拿到用户的Openid,如上文所示,用户id保存在System.Web.HttpContext.Current.Session["openid"] 中,所以获取也是非常简单
在需要获取的地方执行
#region 获取当前用户Openid ReGetOpenId(); log.log("走完获取openid的方法之后,当前Session的值是:" + System.Web.HttpContext.Current.Session["openid"]); #endregion注:上文中 OAuth_Token 类如下:
public class OAuth_Token { /// /// 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 /// public string access_token { get; set; } /// /// access_token接口调用凭证超时时间,单位(秒) /// public string expires_in { get; set; } /// /// 用户刷新access_token /// public string refresh_token { get; set; } /// /// 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID /// public string openid { get; set; } /// /// 用户授权作用域 /// public string scope { get; set; } }日志文件
用到的简单日志类也顺便提供放上来:
////// 日志类 /// public class Log { private string logFile; private StreamWriter writer; private FileStream fileStream = null; public Log(string fileName) { logFile = fileName; CreateDirectory(logFile); } public void log(string info) { try { System.IO.FileInfo fileInfo = new System.IO.FileInfo(logFile); if (!fileInfo.Exists) { fileStream = fileInfo.Create(); writer = new StreamWriter(fileStream); } else { fileStream = fileInfo.Open(FileMode.Append, FileAccess.Write); writer = new StreamWriter(fileStream); } writer.WriteLine(DateTime.Now + ": " + info); } finally { if (writer != null) { writer.Close(); writer.Dispose(); fileStream.Close(); fileStream.Dispose(); } } } public void CreateDirectory(string infoPath) { DirectoryInfo directoryInfo = Directory.GetParent(infoPath); if (!directoryInfo.Exists) { directoryInfo.Create(); } } }
调用呢,很简单,调用方法如下:
Log log = new Log(AppDomain.CurrentDomain.BaseDirectory + @"/log/Log.txt"); log.log("我会被输入在日志文件中")最后呢,拿到当前用户Openid,就可以从数据库再次获取到该用户的其他基本信息。从而可以更好的辅助你完成你项目中其他的业务模块。
感谢你能够认真阅读完这篇文章,希望小编分享的"微信公众号开发网页中如何获取当前用户Openid"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
用户
方法
公众
网页
日志
篇文章
上文
信息
接口
页面
开发
凭证
域名
文件
目标
链接
支持
不同
业务
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南咖啡
互联网加科技
高科技互联网
美国互联网科技巨头监管
朗新科技与工业互联网
互联网医疗科技
有马互联网科技
致聘互联网科技
华中科技有哪些互联网大佬
云创客互联网科技公司
广州慧亚互联网科技怎么样
剑昆互联网络科技有限公司临桂
随着互联网科技发展
湖南诚度互联网科技有限公司
互联网和黑科技的看法
健康食品互联网创新科技园项目
银川新华互联网科技学校联系电话
广州三三互联网科技有限公司
上海旺乐尼互联网科技有限公司
伍佰万互联网科技是干嘛的
疫情对互联网科技公司影响
平安科技 互联网
互联网科技公司的市场部门
卫星互联网科技股票
全球顶尖互联网科技公司
互联网还是高科技吗
互联网科技公司实习生
小米互联网科技园入驻
厦门江牛科技互联网
互联网与数字科技关系