微信公众号开发网页中如何获取当前用户Openid
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了微信公众号开发网页中如何获取当前用户Openid,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体实现首先,我们定一
千家信息网最后更新 2025年11月08日微信公众号开发网页中如何获取当前用户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安全错误
数据库的锁怎样保障安全
香港网络安全和物联网
《网络安全法》科普
qq通过官网恢复数据库
苏州市网络安全技术
微信开放外链软件开发
网络安全系列读后感
服务器安全的关键是()
生产管理的数据库有哪些
古冶区媒体网络技术售后保障
淮安系统软件开发管理
无法给数据库中的用户授权
南京农业大学网络技术专业
网络安全层机构
金山区工商软件开发销售价格
网络安全洗牌
供应商数据库管理表
如何成立一家软件开发外包
网络安全月报属于敏感信息吗
海辉互联网科技
手抄报青少年日主题网络安全
数据库索引思维导图
衡东财政局信息网络安全
数字化国产数据库
卸载数据库工具
寻找软件开发项目
郑州软件开发学校
csgo进完美服务器指令
程序员为网络安全保护
方舟服务器更改版本号
数据库医院有哪些