当前位置首页 > 注册机> 正文

微信号+pc版注册机 PC端使用.NET微信开发实现扫码注册登录功能示例

2022-11-03 14:05:11 暂无评论 注册机

本文主要介绍一个使用.NET微信开发实现PC端扫码注册登录功能的例子。具有一定的参考价值。有兴趣的朋友可以参考一下。我希望您在阅读本文后会有所收获。小编带大家一探究竟。

一、简介

首先声明一下,这篇文章的重点是思想的实现。代码和数据库设计主要是为了展示思想。如果项目对代码效率有严格要求,请勿抄袭。

相信做过微信开发的人并没有少做授权,但是一般来说我们对手机网站的授权是比较多的,也就是微信下的授权。今天遇到的一个问题是该项目支持微信和PC,并且开放注册。要求在PC端或微信端注册后能在对方登录。也就是说,无论是PC还是微信,都必须是“你就是你”(某种意义上的相关)。

2. 寻找解决方案

传统的想法,微信端可以通过授权注册,但PC端的传统方式无非就是填写手机号,或者Email等。如果用这种方式注册,会出现以下问题

1.我先在微信端授权注册,然后我要登陆PC端,还是要注册。

解决办法可以是:微信授权注册后,要求用户填写手机号、邮箱等基本信息是“强制”的。这样,我们就可以通过某种方式为用户生成一个PC端登录账号密码。比如用户的账号就是账号,手机号就是密码,等等。

缺点:用户体验不好,存在安全隐患。毕竟你的微信昵称、邮箱或者手机号都暴露了。

2.如果先在PC端注册,微信授权时如何关联移动端

当然,每个问题都有解决方案。思路如下:

方案一:用户在PC端注册后,“强制”用户必须填写微信昵称。作为微信授权的关联条件。但是很遗憾,微信昵称是可以改的,不是唯一的,怎么能用来联想呢?计划夭折了。

方案二:在微信端授权后,在PC端注册后,“强制”用户填写手机号作为关联。这就引出了一个问题,要保证用户手机的真实性,没问题。这可以通过手机验证码来实现(Email也是一样)。但是让我们假设以下情况。如果我有两个手机号,我在PC端注册时填写一个,在微信上注册时填写一个。你连接了吗?答案是不幸的。另外,我在PC端注册后,只是没有填写(我加双引号的原因),然后我用微信终端授权登录。嗯,此时会有两条数据等着你去寻找关联的方法,典型的开发者自己挖坑。这种方法在一定程度上是可行的,但其严谨性是开发人员无法接受的。

三、回归原点的解决方法

分析:既然上面的方案都有问题,我们先搁置一旁。为了组织我们的思想,让我们回到问题的根源。关联问题需要一个唯一标识符。唯一标识符就像我们的 ID 号。当我们申请信用卡时,需要身份证。在实名制下购买号码卡时,需要提供身份证。假设我们是这个系统的管理员,那么我完全可以通过你的身份证号查出你的手机号和银行卡号。

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

有了上面的思路,我们需要做的就是找到一个唯一的标识符来作为关联。微信发挥着重要作用。和我们上面提到的身份证号功能一样,微信账号唯一标识一个公众号。

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

做过微信开发的人应该对微信终端的授权没有问题。问题是如何在PC端注册或登录时获取。作者的实现思路如下。在PC端注册微信号+pc版注册机,或者登录时显示二维码,引导用户使用微信扫码跳转到授权页面。此步骤具有最关键的细节之一。请携带唯一的二维码授权码()。想象一下,如果用户被授权,我们是否可以写入和写入数据库。然后我们可以通过PC端的API获取关联的。如果我们这样做,我们可以知道当前谁在扫码注册或在PC端登录(注册不注册,直接注册登录)。你是不是突然觉得很轻松?如果觉得文字比较抽象,请看下图

PC端微信扫码登录流程

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

核心代码

搞清楚思路和流程后,我们直接上代码。开发思路是通用的,开发语言应该显示出它的魔力。

注:以下代码以C#语言为例微信号+pc版注册机微信号+pc版注册机,使用MVC+EF(注:uuid相当于我们上面的)

扫码登录页面后台代码

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();
}

插件..js 用于生成二维码。如果你想了解更多,请移步。这里需要注意的一点是插件可以指定二维码的生成方式,或者表格请指定使用表格生成需要支持IE的朋友。

代码显示如下:

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

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


<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";
}

微信终端授权

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();
}

最后附上数据库表设计

没什么特别的,只是给微信返回的每个参数添加一个自定义的uuId

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

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

运行结果

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

1.扫码登录页面

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

2.请求用户授权

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

3、用户确认授权

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

4.电脑登录完成

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

感谢您仔细阅读本文。希望小编分享的《.NET微信开发PC扫码注册登录功能示例》这篇文章对大家有所帮助。同时也希望大家多多支持易素云。,关注易宿云行业资讯频道,更多相关知识等你学习!

版权保护: 本文由 8BDU软件分享博客-8BDU软件园 原创,转载请保留链接: /zhuceji/4200.html

猜你喜欢

博客主人倒杯水
男,单身,无聊上班族,闲着没事喜欢研究代码,密集恐怖深度患者,资深技术宅。
  • 5435 文章总数
  • 135630访问次数
  • 2782建站天数
  • 标签