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

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

Apr 26, 2017 pm 02:51 PM
pc

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

一、前言

先声明一下,本文所注重点为实现思路,代码及数据库设计主要为了展现思路,如果对代码效率有着苛刻要求的项目切勿照搬。

相信做过微信开发的人授权这块都没少做过,但是一般来说我们更多的是为移动端的网站做授权,确切来说是在微信端下做的一个授权。今天遇到的一个问题是,项目支持微信端以及 PC 端,并且开放注册。要求做到无论在 PC 端注册或者是在微信端注册之后都可以在另外一个端进行登录。也就是说无论 PC 或是微信必须做到"你就是你"(通过某种方式关联)。

二、寻找解决方案

按传统的方式来思考,微信端完全可以通过授权进行注册,但是PC端呢,传统的方式无非就是填填手机号码啊,或者 Email 等等。如果采用这种方式注册,会产生下面这的问题

1.我先在微信端授权注册,那么如果我要登录PC端还是得进行注册。

对此解决方案可以为:微信授权注册后“强制”要求用户必须填写基本信息,如手机号、Email 。这样我们可以通过某种方式为用户生成PC端登录的账号密码.例如以用户的 nickname 为账号,手机号码为密码,等等方式。

弊端:用户体验不好,再者有安全隐患。毕竟你的微信昵称, Email 或者手机号码都是暴露的。

2.如果我先在 PC 端注册,我在微信授权的时候怎样关联移动端

当然,凡是问题总会有解决方案的。思路如下:

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

    方案二:在微信端授权后,以及在 PC 端注册后“强制”要求用户填写手机号码以此为关联。这样衍生出一个问题,必须确保用户手机的真实信,没问题。这个可以通过手机验证码来实现(Email也是一样)。但是不妨假设一下有下面这种情况,如果我有两个手机号码,PC 端注册时填一个,微信注册时填另一个。关联的了吗?答案是很遗憾。再者,我在PC 端注册后我就是不填(笔者把强制打上双引号的原因),然后我用微信端授权登录一下。好吧,此时将会有两条数据等着你想办法去关联,典型的开发者自挖坑。这种方式某种程度上行得通,但是严谨程度上是开发者无法接受的。

三、回归原点的解决方案

分析:既然方案上述方案都有问题,我们先把它们都抛到一边。整理一下思路,让我们回到问题的根本。关联的问题,要的是一个唯一标识。唯一标识正如我们的身份证号码,我们办理信用卡的时候身份证是必须的,实名制下购买号码卡,身份证是必须的。假设我们是这系统管理员,那么我完全可以通过你的身份证号码查出你手机号码,银行卡号码。

有了上面的思路之后,我们需要做的就是找到一个唯一标识来作为关联.微信上有个重要的角色 openid。 它跟我们上面提到的身份证号码有这共同的作用,微信账号对某一公众号的唯一标识。

微信端的授权拿到 openid 做过微信开发的人都应该没有问题。问题是怎样来实现 PC 端 在注册或者登陆的时候拿到 openid。笔者的实现思路如下。PC 端注册,或者登陆时显示一个二维码引导用户使用微信扫码,使其跳转到授权页面。这一步有一个最为关键的细节,二维码请带上一个唯一的授权码(authCode)。试想一下如果用户授权后我们能把 openid 以及 authCode 写入到数据库。那么我们就可以在 PC 端通过某个 API 获取 authCode 所关联的这个 openid。如果我们做到这点我们就可以知道当前是谁在 PC 端进行扫码注册或登录(没注册的注册,有注册的直接登录)。 是不是突然觉得 so easy. 如果觉得文字比较抽象,请看下面图示

PC 端微信扫码登录流程

核心代码

搞清楚了思路和流程接下来我们直接上代码啦.开发思路是共通的,开发语言就请各显神通啦。

说明:下面代码以 C# 语言为例,采用 MVC + EF (注:uuid 等价于我们上述的 authCode)

扫码登录页后台代码

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();
}
Salin selepas log masuk

生成二维码采用插件 jquery.qrcode.js,想详细了解的朋友请移步 Github。 这里需要注意的一点是,该插件可以指定二维码的生成方式,canvas 或者 table 请需要支持 IE 的朋友指定使用 table 生成

代码如下:

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

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

<!--生成二维码的容器 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(&#39;#qrcode-container&#39;).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 = &#39;@Url.Action("Index", "Home")&#39;;
clearInterval(interval);
}
}
});
}, 200);
})
</script>
Salin selepas log masuk

轮询判断用户是否授权 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";
}
Salin selepas log masuk

微信端授权 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();
}
Salin selepas log masuk

最后附上数据库表设计

没什么特殊的,就是微信返回的各个参数加多一个我们自定义的 uuId

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

运行效果

1.扫码登录页面

2.请求用户授权

3.用户确认授权

4.PC 端登录完成

Atas ialah kandungan terperinci PC端用.NET微信开发实现扫码注册和登录功能详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Membetulkan Ralat Penuh Sementara Titik Akses pada PC Windows Cara Membetulkan Ralat Penuh Sementara Titik Akses pada PC Windows Mar 16, 2024 pm 03:19 PM

Jika anda menghadapi ralat "Titik akses penuh buat sementara waktu" semasa menyambung ke penghala Wi-Fi atau tempat liputan mudah alih pada PC Windows 11/10 anda, ini biasanya disebabkan oleh beban rangkaian atau terlalu banyak peranti yang disambungkan. Untuk menyelesaikan masalah ini dan berjaya menyambung ke Internet, anda boleh mencuba kaedah berikut: 1. Tunggu seketika untuk peranti lain memutuskan sambungan sebelum cuba menyambung semula. 2. Mulakan semula penghala Wi-Fi atau tempat liputan mudah alih anda untuk mengosongkan cache rangkaian dan menetapkan semula alamat IP. 3. Pastikan pemacu penyesuai Wi-Fi PC anda dikemas kini, semak kemas kini melalui Pengurus Peranti. 4. Cuba untuk menyambung pada masa yang berbeza Mengelakkan waktu sibuk mungkin mempunyai peluang sambungan yang lebih baik. 5. Pertimbangkan untuk menambah AccessP

Apakah maksud pc dalam istilah Internet? Apakah maksud pc dalam istilah Internet? Aug 10, 2023 pm 04:34 PM

PC ialah singkatan biasa yang bermaksud "Komputer Peribadi". Komputer peribadi ialah peranti pengkomputeran di mana-mana yang boleh digunakan untuk memproses dan menyimpan data, menjalankan program perisian dan menyambung ke Internet. Dalam era pendigitalan dan maklumat, komputer peribadi bukan sahaja alat, tetapi juga tingkap untuk berhubung dengan dunia Ia juga merupakan alat penting untuk orang ramai memperoleh pengetahuan, memperkayakan kehidupan mereka dan mencapai pembangunan peribadi.

Windows PC terus but ke dalam BIOS [Betulkan] Windows PC terus but ke dalam BIOS [Betulkan] Mar 11, 2024 am 09:40 AM

Jika PC Windows anda kerap memasuki antara muka BIOS, ini boleh menyebabkan kesukaran untuk digunakan. Saya tersekat dengan skrin BIOS setiap kali saya menghidupkan komputer saya, dan memulakan semula tidak membantu. Jika anda menghadapi masalah ini, maka penyelesaian yang disediakan dalam artikel ini akan membantu anda. Mengapa komputer saya terus but dalam BIOS? Komputer anda dimulakan semula secara kerap dalam mod BIOS mungkin disebabkan oleh pelbagai sebab, seperti tetapan jujukan but yang tidak betul, kabel SATA yang rosak, sambungan longgar, ralat konfigurasi BIOS atau kegagalan cakera keras, dsb. Betulkan Windows PC Terus Buta ke BIOS Jika PC Windows anda terus but masuk ke BIOS, gunakan pembaikan di bawah. Semak pesanan but anda dan palamkan semula

Cara menggunakan Samsung Flow pada PC Windows Cara menggunakan Samsung Flow pada PC Windows Feb 19, 2024 pm 07:54 PM

SamsungFlow ialah alat mudah dan praktikal yang membolehkan anda menyambungkan telefon Galaxy anda ke PC Windows anda dengan mudah. Dengan SamsungFlow, anda boleh berkongsi kandungan dengan mudah antara peranti, pemberitahuan penyegerakan, cermin telefon pintar dan banyak lagi. Artikel ini akan memperkenalkan cara menggunakan SamsungFlow pada komputer Windows. Cara menggunakan Penstriman Telefon Pintar pada Windows PC Untuk menggunakan SamsungFlow untuk menyambungkan Windows PC dan Galaxy Phone anda, anda perlu memastikan bahawa telefon pintar dan tablet Galaxy anda menjalankan Android 7.0 atau lebih tinggi dan Windows PC anda menjalankan Windows 10 atau lebih tinggi.

Cara memuat turun semua fail OneDrive ke PC sekaligus Cara memuat turun semua fail OneDrive ke PC sekaligus Feb 19, 2024 pm 06:51 PM

Artikel ini akan mengajar anda cara memuat turun semua fail OneDrive ke PC anda sekaligus. OneDrive ialah platform storan awan yang berkuasa yang membolehkan pengguna mengakses fail mereka pada bila-bila masa, di mana-mana sahaja. Kadangkala, pengguna mungkin perlu menyandarkan fail secara setempat atau mengaksesnya di luar talian. Teruskan membaca untuk mengetahui cara melakukan ini dengan mudah. Bagaimana untuk memuat turun semua fail OneDrive ke PC sekaligus? Ikuti langkah ini untuk memuat turun semua fail OneDrive ke PC Windows anda sekaligus: Lancarkan Onedrive dan navigasi ke Fail Saya. Semua fail yang dimuat naik pada OneDrive akan tersedia di sini. Tekan CTRL+A untuk memilih semua fail, atau tandai kotak semak untuk menogol pemilihan semua item. Klik pada pilihan muat turun di bahagian atas,

Pengembaraan Hos Chrome Kos Rendah: Ia Tidak Dapat Memasang Epal Hitam, tetapi Ia Boleh Dianggap sebagai PC yang Layak Pengembaraan Hos Chrome Kos Rendah: Ia Tidak Dapat Memasang Epal Hitam, tetapi Ia Boleh Dianggap sebagai PC yang Layak Jul 11, 2024 pm 04:38 PM

Bercakap mengenainya, kami telah menghasilkan banyak keluaran siri sampah asing, tetapi sebelum itu, kebanyakannya adalah telefon mudah alih dan PC dipasang yang pertama mempunyai kebolehmainan biasa, manakala yang kedua penuh dengan ketidakpastian. Sebagai contoh, komputer yang kami belanjakan 300 untuk memasang kali terakhir kini telah memasuki keadaan pengalihan keluar pemandu tanpa henti. Walau bagaimanapun, "mengambil kain buruk" adalah apa itu, dan kewujudan bersama risiko dan faedah adalah norma. Sebagai contoh, saya "mengambil" ASUS ChromeBox kali ini saya pada asalnya ingin menjadikannya Macmini (palsu), tetapi saya menghadapi banyak masalah yang tidak dijangka semasa proses dan gagal mencapai matlamat yang dimaksudkan. Akhirnya, saya terpaksa berpuas hati dengan perkara terbaik seterusnya dan memilih untuk menyalakan Windows padanya. Walaupun percubaan untuk menghitamkan epal jatuh ke langkah terakhir, saya berasa sangat seronok sepanjang proses itu. Dan sebagai

Komputer yang saya belanjakan 300 yuan untuk memasang berjaya dijalankan melalui model besar tempatan Komputer yang saya belanjakan 300 yuan untuk memasang berjaya dijalankan melalui model besar tempatan Apr 12, 2024 am 08:07 AM

Jika 2023 diiktiraf sebagai tahun pertama AI, maka 2024 berkemungkinan menjadi tahun penting untuk mempopularkan model AI yang besar. Pada tahun lalu, sejumlah besar model AI yang besar dan sejumlah besar aplikasi AI telah muncul Pengeluar seperti Meta dan Google juga telah mula melancarkan model besar dalam talian/tempatan mereka sendiri kepada orang ramai, serupa dengan "kecerdasan buatan AI. " itu di luar jangkauan. Konsep itu tiba-tiba datang kepada orang ramai. Pada masa kini, orang ramai semakin terdedah kepada kecerdasan buatan dalam kehidupan mereka Jika anda melihat dengan teliti, anda akan mendapati bahawa hampir semua pelbagai aplikasi AI yang anda boleh akses digunakan pada "awan". Jika anda ingin membina peranti yang boleh menjalankan model besar secara tempatan, maka perkakasan itu adalah AIPC serba baharu berharga lebih daripada 5,000 yuan Untuk orang biasa,

Windows 11 Lite: Apakah itu dan cara memasangnya pada PC anda Windows 11 Lite: Apakah itu dan cara memasangnya pada PC anda Apr 14, 2023 pm 11:19 PM

Kami tahu bahawa Microsoft Windows 11 ialah sistem pengendalian berciri penuh dan direka bentuk menarik. Walau bagaimanapun, pengguna telah meminta versi Windows 11 Lite. Walaupun ia menawarkan penambahbaikan yang ketara, Windows 11 ialah sistem pengendalian yang mementingkan sumber yang boleh mengacaukan mesin lama dengan cepat sehingga tidak dapat berjalan dengan lancar lagi. Artikel ini akan menjawab soalan yang paling kerap ditanya tentang sama ada terdapat versi Windows 11 Lite dan sama ada ia selamat untuk dimuat turun. Ikuti! Adakah terdapat versi Windows 11 Lite? Versi Windows 11 Lite 21H2 yang kita bicarakan telah dibangunkan oleh Neelkalpa T

See all articles