這篇文章主要介紹了.NET微信開發(fā)之PC 端微信掃碼注冊和登錄功能實現(xiàn)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
一、前言
先聲明一下,本文所注重點為實現(xiàn)思路,代碼及數(shù)據(jù)庫設(shè)計主要為了展現(xiàn)思路,如果對代碼效率有著苛刻要求的項目切勿照搬。
相信做過微信開發(fā)的人授權(quán)這塊都沒少做過,但是一般來說我們更多的是為移動端的網(wǎng)站做授權(quán),確切來說是在微信端下做的一個授權(quán)。今天遇到的一個問題是,項目支持微信端以及 PC 端,并且開放注冊。要求做到無論在 PC 端注冊或者是在微信端注冊之后都可以在另外一個端進行登錄。也就是說無論 PC 或是微信必須做到"你就是你"(通過某種方式關(guān)聯(lián))。
二、尋找解決方案
按傳統(tǒng)的方式來思考,微信端完全可以通過授權(quán)進行注冊,但是PC端呢,傳統(tǒng)的方式無非就是填填手機號碼啊,或者 Email 等等。如果采用這種方式注冊,會產(chǎn)生下面這的問題
1.我先在微信端授權(quán)注冊,那么如果我要登錄PC端還是得進行注冊。
對此解決方案可以為:微信授權(quán)注冊后“強制”要求用戶必須填寫基本信息,如手機號、Email 。這樣我們可以通過某種方式為用戶生成PC端登錄的賬號密碼.例如以用戶的 nickname 為賬號,手機號碼為密碼,等等方式。
弊端:用戶體驗不好,再者有安全隱患。畢竟你的微信昵稱, Email 或者手機號碼都是暴露的。
2.如果我先在 PC 端注冊,我在微信授權(quán)的時候怎樣關(guān)聯(lián)移動端
當然,凡是問題總會有解決方案的。思路如下:
方案一:當用戶在 PC 端注冊后,“強制” 用戶必須填寫微信昵稱。以此作為微信授權(quán)時的關(guān)聯(lián)條件。但是很遺憾,微信昵稱可以改,不是唯一的怎么可以用來做關(guān)聯(lián)?方案一陣亡。
方案二:在微信端授權(quán)后,以及在 PC 端注冊后“強制”要求用戶填寫手機號碼以此為關(guān)聯(lián)。這樣衍生出一個問題,必須確保用戶手機的真實信,沒問題。這個可以通過手機驗證碼來實現(xiàn)(Email也是一樣)。但是不妨假設(shè)一下有下面這種情況,如果我有兩個手機號碼,PC 端注冊時填一個,微信注冊時填另一個。關(guān)聯(lián)的了嗎?答案是很遺憾。再者,我在PC 端注冊后我就是不填(筆者把強制打上雙引號的原因),然后我用微信端授權(quán)登錄一下。好吧,此時將會有兩條數(shù)據(jù)等著你想辦法去關(guān)聯(lián),典型的開發(fā)者自挖坑。這種方式某種程度上行得通,但是嚴謹程度上是開發(fā)者無法接受的。
三、回歸原點的解決方案
分析:既然方案上述方案都有問題,我們先把它們都拋到一邊。整理一下思路,讓我們回到問題的根本。關(guān)聯(lián)的問題,要的是一個唯一標識。唯一標識正如我們的身份證號碼,我們辦理信用卡的時候身份證是必須的,實名制下購買號碼卡,身份證是必須的。假設(shè)我們是這系統(tǒng)管理員,那么我完全可以通過你的身份證號碼查出你手機號碼,銀行卡號碼。
有了上面的思路之后,我們需要做的就是找到一個唯一標識來作為關(guān)聯(lián).微信上有個重要的角色 openid。 它跟我們上面提到的身份證號碼有這共同的作用,微信賬號對某一公眾號的唯一標識。
微信端的授權(quán)拿到 openid 做過微信開發(fā)的人都應(yīng)該沒有問題。問題是怎樣來實現(xiàn) PC 端 在注冊或者登陸的時候拿到 openid。筆者的實現(xiàn)思路如下。PC 端注冊,或者登陸時顯示一個二維碼引導用戶使用微信掃碼,使其跳轉(zhuǎn)到授權(quán)頁面。這一步有一個最為關(guān)鍵的細節(jié),二維碼請帶上一個唯一的授權(quán)碼(authCode)。試想一下如果用戶授權(quán)后我們能把 openid 以及 authCode 寫入到數(shù)據(jù)庫。那么我們就可以在 PC 端通過某個 API 獲取 authCode 所關(guān)聯(lián)的這個 openid。如果我們做到這點我們就可以知道當前是誰在 PC 端進行掃碼注冊或登錄(沒注冊的注冊,有注冊的直接登錄)。 是不是突然覺得 so easy. 如果覺得文字比較抽象,請看下面圖示
PC 端微信掃碼登錄流程
核心代碼
搞清楚了思路和流程接下來我們直接上代碼啦.開發(fā)思路是共通的,開發(fā)語言就請各顯神通啦。
說明:下面代碼以 C# 語言為例,采用 MVC + EF (注:uuid 等價于我們上述的 authCode)
掃碼登錄頁后臺代碼
public ActionResult Login() { //如果已登錄,直接跳轉(zhuǎn)到首頁 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;//構(gòu)造授權(quán)鏈接 ViewBag.uuid = uuid;//保存 uuid return View(); }
生成二維碼采用插件 jquery.qrcode.js,想詳細了解的朋友請移步 Github。 這里需要注意的一點是,該插件可以指定二維碼的生成方式,canvas 或者 table 請需要支持 IE 的朋友指定使用 table 生成
代碼如下:
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"); //輪詢判斷用戶是否授權(quán) var interval = setInterval(function () { $.post("@Url.Action("UserLogin","Home")", { "uuid": "@ViewBag.uuid" }, function (data, status) { if ("success" == status) { //用戶成功授權(quán)=>跳轉(zhuǎn) if ("success" == data) { window.location.href = '@Url.Action("Index", "Home")'; clearInterval(interval); } } }); }, 200); }) </script>
輪詢判斷用戶是否授權(quán) API 代碼
public string UserLogin(string uuid) { //驗證參數(shù)是否合法 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"; }
微信端授權(quán) Action
public ActionResult Loginfor(string uuid) { #region 獲取基本信息 - snsapi_userinfo /* * 創(chuàng)建微信通用類 - 這里代碼比較復雜不在這里貼出 * 遲點我會將整個 Demo 稍微整理放上 Github */ WechatUserContext wxcontext = new WechatUserContext(System.Web.HttpContext.Current, uuid); //使用微信通用類獲取用戶基本信息 wxcontext.GetUserInfo(); if (!string.IsNullOrEmpty(wxcontext.openid)) { uuid = Request["state"]; //判斷數(shù)據(jù)庫是否存在 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(); }
最后附上數(shù)據(jù)庫表設(shè)計
沒什么特殊的,就是微信返回的各個參數(shù)加多一個我們自定義的 uuId
微信參數(shù)說明 詳情請見 微信開發(fā)者文檔
運行效果
1.掃碼登錄頁面
2.請求用戶授權(quán)
3.用戶確認授權(quán)
4.PC 端登錄完成
Atas ialah kandungan terperinci PC端用.NET微信開發(fā)實現(xiàn)掃碼注冊和登錄功能詳解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

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

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]](https://img.php.cn/upload/article/000/887/227/171012121854600.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
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

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,

"Operation Delta" akan melancarkan ujian PC berskala besar yang dipanggil "Codename: ZERO" hari ini (7 Mac). Hujung minggu lalu, permainan ini mengadakan acara pengalaman flash mob luar talian di Shanghai, dan 17173 juga bertuah kerana dijemput untuk mengambil bahagian. Ujian ini hanya tinggal lebih empat bulan lagi daripada kali terakhir, yang membuatkan kami tertanya-tanya, apakah sorotan dan kejutan baharu yang akan dibawa oleh "Operasi Delta" dalam tempoh yang singkat? Lebih empat bulan yang lalu, saya mengalami "Operasi Delta" dalam sesi merasa luar talian dan versi beta pertama. Pada masa itu, permainan hanya membuka mod "Tindakan Berbahaya". Walau bagaimanapun, Operasi Delta sudah mengagumkan pada zamannya. Dalam konteks pengeluar utama yang berpusu-pusu ke pasaran permainan mudah alih, FPS sedemikian yang setanding dengan piawaian antarabangsa

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

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.

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,
