PC端用.NET微信开发实现扫码注册和登录功能详解

互联网 17-4-26
这篇文章主要介绍了.NET微信开发之PC 端微信扫码注册和登录功能实现的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

一、前言

二、寻找解决方案

    方案一:当用户在 PC 端注册后,“强制” 用户必须填写微信昵称。以此作为微信授权时的关联条件。但是很遗憾,微信昵称可以改,不是唯一的怎么可以用来做关联?方案一阵亡。

三、回归原点的解决方案

PC 端微信扫码登录流程

扫码登录页后台代码

public ActionResult Login()  {  //如果已登录,直接跳转到首页  if (User.Identity.IsAuthenticated)  return RedirectToAction("Index", "Home");  string url = Request.Url.Host;  string uuid = Guid.NewGuid().ToString();  ViewBag.url = "http://" + url + "/home/loginfor?uuid=" + uuid;//构造授权链接  ViewBag.uuid = uuid;//保存 uuid  return View();  }

代码如下:

jQuery('#qrcode').qrcode({  render : "table",  text : "http://baidu.com"  });

回归正题,登录页面的主要代码如下

<!--生成二维码的容器 p-->  <p id="qrcode-container">  </p>  <script src="~/Plugins/Jquery/jquery-1.9.1.min.js"></script>  <script src="~/Plugins/jquery-qrcode/jquery.qrcode.min.js"></script>  <script>  jQuery(function () {  //生成二维码  jQuery('#qrcode-container').qrcode("@ViewBag.url");  //轮询判断用户是否授权  var interval = setInterval(function () {  $.post("@Url.Action("UserLogin","Home")", { "uuid": "@ViewBag.uuid" }, function (data, status) {  if ("success" == status) {  //用户成功授权=>跳转  if ("success" == data) {  window.location.href = '@Url.Action("Index", "Home")';  clearInterval(interval);  }  }  });  }, 200);  })  </script>

轮询判断用户是否授权 API 代码

public string UserLogin(string uuid)  {  //验证参数是否合法  if (string.IsNullOrEmpty(uuid))  return "param_error";  WX_UserRecord user = db.WX_UserRecord.Where(u => u.uuId == uuid).FirstOrDefault();  if (user == null)  return "not_authcode";  //写入cookie  FormsAuthentication.SetAuthCookie(user.OpenId, false);  //清空uuid  user.uuId = null;  db.SaveChanges();  return "success";  }

微信端授权 Action

public ActionResult Loginfor(string uuid)  {  #region 获取基本信息 - snsapi_userinfo  /*  * 创建微信通用类 - 这里代码比较复杂不在这里贴出  * 迟点我会将整个 Demo 稍微整理放上 Github  */  WechatUserContext wxcontext = new WechatUserContext(System.Web.HttpContext.Current, uuid);  //使用微信通用类获取用户基本信息  wxcontext.GetUserInfo();  if (!string.IsNullOrEmpty(wxcontext.openid))  {  uuid = Request["state"];  //判断数据库是否存在  WX_UserRecord user = db.WX_UserRecord.Where(u => u.OpenId == wxcontext.openid).FirstOrDefault();  if (null == user)  {  user = new WX_UserRecord();  user.OpenId = wxcontext.openid;  user.City = wxcontext.city;  user.Country = wxcontext.country;  user.CreateTime = DateTime.Now;  user.HeadImgUrl = wxcontext.headimgurl;  user.Nickname = wxcontext.nickname;  user.Province = wxcontext.province;  user.Sex = wxcontext.sex;  user.Unionid = wxcontext.unionid;   user.uuId = uuid;  db.WX_UserRecord.Add(user);  }  user.uuId = uuid;  db.SaveChanges();  }  #endregion  return View();  }

最后附上数据库表设计

微信参数说明 详情请见 微信开发者文档

以上就是PC端用.NET微信开发实现扫码注册和登录功能详解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:ASP.NET Core集成微信登录的实例图解

相关资讯