国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 微信小程序 微信開(kāi)發(fā) 使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

Mar 20, 2017 pm 02:02 PM
pc 微信開(kāi)發(fā)

這篇文章主要介紹了.NET微信開(kāi)發(fā)之PC 端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

一、前言

先聲明一下,本文所注重點(diǎn)為實(shí)現(xiàn)思路,代碼及數(shù)據(jù)庫(kù)設(shè)計(jì)主要為了展現(xiàn)思路,如果對(duì)代碼效率有著苛刻要求的項(xiàng)目切勿照搬。

相信做過(guò)微信開(kāi)發(fā)的人授權(quán)這塊都沒(méi)少做過(guò),但是一般來(lái)說(shuō)我們更多的是為移動(dòng)端的網(wǎng)站做授權(quán),確切來(lái)說(shuō)是在微信端下做的一個(gè)授權(quán)。今天遇到的一個(gè)問(wèn)題是,項(xiàng)目支持微信端以及 PC 端,并且開(kāi)放注冊(cè)。要求做到無(wú)論在 PC 端注冊(cè)或者是在微信端注冊(cè)之后都可以在另外一個(gè)端進(jìn)行登錄。也就是說(shuō)無(wú)論 PC 或是微信必須做到"你就是你"(通過(guò)某種方式關(guān)聯(lián))。

二、尋找解決方案

按傳統(tǒng)的方式來(lái)思考,微信端完全可以通過(guò)授權(quán)進(jìn)行注冊(cè),但是PC端呢,傳統(tǒng)的方式無(wú)非就是填填手機(jī)號(hào)碼啊,或者 Email 等等。如果采用這種方式注冊(cè),會(huì)產(chǎn)生下面這的問(wèn)題

1.我先在微信端授權(quán)注冊(cè),那么如果我要登錄PC端還是得進(jìn)行注冊(cè)。

對(duì)此解決方案可以為:微信授權(quán)注冊(cè)后“強(qiáng)制”要求用戶必須填寫(xiě)基本信息,如手機(jī)號(hào)、Email 。這樣我們可以通過(guò)某種方式為用戶生成PC端登錄的賬號(hào)密碼.例如以用戶的 nickname 為賬號(hào),手機(jī)號(hào)碼為密碼,等等方式。

弊端:用戶體驗(yàn)不好,再者有安全隱患。畢竟你的微信昵稱, Email 或者手機(jī)號(hào)碼都是暴露的。

2.如果我先在 PC 端注冊(cè),我在微信授權(quán)的時(shí)候怎樣關(guān)聯(lián)移動(dòng)端

當(dāng)然,凡是問(wèn)題總會(huì)有解決方案的。思路如下:

    方案一:當(dāng)用戶在 PC 端注冊(cè)后,“強(qiáng)制” 用戶必須填寫(xiě)微信昵稱。以此作為微信授權(quán)時(shí)的關(guān)聯(lián)條件。但是很遺憾,微信昵稱可以改,不是唯一的怎么可以用來(lái)做關(guān)聯(lián)?方案一陣亡。

    方案二:在微信端授權(quán)后,以及在 PC 端注冊(cè)后“強(qiáng)制”要求用戶填寫(xiě)手機(jī)號(hào)碼以此為關(guān)聯(lián)。這樣衍生出一個(gè)問(wèn)題,必須確保用戶手機(jī)的真實(shí)信,沒(méi)問(wèn)題。這個(gè)可以通過(guò)手機(jī)驗(yàn)證碼來(lái)實(shí)現(xiàn)(Email也是一樣)。但是不妨假設(shè)一下有下面這種情況,如果我有兩個(gè)手機(jī)號(hào)碼,PC 端注冊(cè)時(shí)填一個(gè),微信注冊(cè)時(shí)填另一個(gè)。關(guān)聯(lián)的了嗎?答案是很遺憾。再者,我在PC 端注冊(cè)后我就是不填(筆者把強(qiáng)制打上雙引號(hào)的原因),然后我用微信端授權(quán)登錄一下。好吧,此時(shí)將會(huì)有兩條數(shù)據(jù)等著你想辦法去關(guān)聯(lián),典型的開(kāi)發(fā)者自挖坑。這種方式某種程度上行得通,但是嚴(yán)謹(jǐn)程度上是開(kāi)發(fā)者無(wú)法接受的。

三、回歸原點(diǎn)的解決方案

分析:既然方案上述方案都有問(wèn)題,我們先把它們都拋到一邊。整理一下思路,讓我們回到問(wèn)題的根本。關(guān)聯(lián)的問(wèn)題,要的是一個(gè)唯一標(biāo)識(shí)。唯一標(biāo)識(shí)正如我們的身份證號(hào)碼,我們辦理信用卡的時(shí)候身份證是必須的,實(shí)名制下購(gòu)買號(hào)碼卡,身份證是必須的。假設(shè)我們是這系統(tǒng)管理員,那么我完全可以通過(guò)你的身份證號(hào)碼查出你手機(jī)號(hào)碼,銀行卡號(hào)碼。

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

有了上面的思路之后,我們需要做的就是找到一個(gè)唯一標(biāo)識(shí)來(lái)作為關(guān)聯(lián).微信上有個(gè)重要的角色 openid。 它跟我們上面提到的身份證號(hào)碼有這共同的作用,微信賬號(hào)對(duì)某一公眾號(hào)的唯一標(biāo)識(shí)。

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

微信端的授權(quán)拿到 openid 做過(guò)微信開(kāi)發(fā)的人都應(yīng)該沒(méi)有問(wèn)題。問(wèn)題是怎樣來(lái)實(shí)現(xiàn) PC 端 在注冊(cè)或者登陸的時(shí)候拿到 openid。筆者的實(shí)現(xiàn)思路如下。PC 端注冊(cè),或者登陸時(shí)顯示一個(gè)二維碼引導(dǎo)用戶使用微信掃碼,使其跳轉(zhuǎn)到授權(quán)頁(yè)面。這一步有一個(gè)最為關(guān)鍵的細(xì)節(jié),二維碼請(qǐng)帶上一個(gè)唯一的授權(quán)碼(authCode)。試想一下如果用戶授權(quán)后我們能把 openid 以及 authCode 寫(xiě)入到數(shù)據(jù)庫(kù)。那么我們就可以在 PC 端通過(guò)某個(gè) API 獲取 authCode 所關(guān)聯(lián)的這個(gè) openid。如果我們做到這點(diǎn)我們就可以知道當(dāng)前是誰(shuí)在 PC 端進(jìn)行掃碼注冊(cè)或登錄(沒(méi)注冊(cè)的注冊(cè),有注冊(cè)的直接登錄)。 是不是突然覺(jué)得 so easy. 如果覺(jué)得文字比較抽象,請(qǐng)看下面圖示

PC 端微信掃碼登錄流程

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

核心代碼

搞清楚了思路和流程接下來(lái)我們直接上代碼啦.開(kāi)發(fā)思路是共通的,開(kāi)發(fā)語(yǔ)言就請(qǐng)各顯神通啦。

說(shuō)明:下面代碼以 C# 語(yǔ)言為例,采用 MVC + EF (注:uuid 等價(jià)于我們上述的 authCode)

掃碼登錄頁(yè)后臺(tái)代碼

public?ActionResult?Login()
{
//如果已登錄,直接跳轉(zhuǎn)到首頁(yè)
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,想詳細(xì)了解的朋友請(qǐng)移步 Github。 這里需要注意的一點(diǎn)是,該插件可以指定二維碼的生成方式,canvas 或者 table 請(qǐng)需要支持 IE 的朋友指定使用 table 生成

代碼如下:

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

回歸正題,登錄頁(yè)面的主要代碼如下

<!--生成二維碼的容器 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)
{
//驗(yàn)證參數(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";
//寫(xiě)入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)建微信通用類?-?這里代碼比較復(fù)雜不在這里貼出
* 遲點(diǎn)我會(huì)將整個(gè)?Demo?稍微整理放上?Github
*/
WechatUserContext?wxcontext?=?new?WechatUserContext(System.Web.HttpContext.Current,?uuid);
//使用微信通用類獲取用戶基本信息
wxcontext.GetUserInfo();
if?(!string.IsNullOrEmpty(wxcontext.openid))
{
uuid?=?Request["state"];
//判斷數(shù)據(jù)庫(kù)是否存在
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ù)庫(kù)表設(shè)計(jì)

沒(méi)什么特殊的,就是微信返回的各個(gè)參數(shù)加多一個(gè)我們自定義的 uuId

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

微信參數(shù)說(shuō)明 詳情請(qǐng)見(jiàn) 微信開(kāi)發(fā)者文檔

運(yùn)行效果

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

1.掃碼登錄頁(yè)面

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

2.請(qǐng)求用戶授權(quán)

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

3.用戶確認(rèn)授權(quán)

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼

4.PC 端登錄完成

使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼


以上是使用.NET微信開(kāi)發(fā)PC端微信掃碼注冊(cè)和登錄功能實(shí)現(xiàn)代碼的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何在Windows PC上解決接入點(diǎn)臨時(shí)滿錯(cuò)誤 如何在Windows PC上解決接入點(diǎn)臨時(shí)滿錯(cuò)誤 Mar 16, 2024 pm 03:19 PM

當(dāng)連接到Windows11/10PC上的Wi-Fi路由器或移動(dòng)熱點(diǎn)時(shí),如果遇到錯(cuò)誤的“接入點(diǎn)暫時(shí)滿”的問(wèn)題,這通常是由于網(wǎng)絡(luò)過(guò)載或連接設(shè)備數(shù)量過(guò)多引起的。為了解決這個(gè)問(wèn)題并成功連接到互聯(lián)網(wǎng),您可以嘗試以下方法:1.等待一段時(shí)間,讓其他設(shè)備斷開(kāi)連接后再嘗試連接。2.重啟Wi-Fi路由器或移動(dòng)熱點(diǎn),以便清除網(wǎng)絡(luò)緩存并重新分配IP地址。3.確保您的PC的Wi-Fi適配器驅(qū)動(dòng)程序是最新的,可以通過(guò)設(shè)備管理器來(lái)檢查更新。4.嘗試在不同的時(shí)間連接,避開(kāi)高峰時(shí)段可能會(huì)有更好的連接機(jī)會(huì)。5.考慮增AccessP

pc是什么意思網(wǎng)絡(luò)用語(yǔ) pc是什么意思網(wǎng)絡(luò)用語(yǔ) Aug 10, 2023 pm 04:34 PM

PC是個(gè)常見(jiàn)的縮寫(xiě)詞,它代表 "Personal Computer"的意思。個(gè)人電腦是一種具有普遍應(yīng)用的計(jì)算設(shè)備,可以用于處理和存儲(chǔ)數(shù)據(jù)、運(yùn)行軟件程序和連接到互聯(lián)網(wǎng)。在一個(gè)數(shù)字化和信息化的時(shí)代,個(gè)人電腦不僅是一種工具,也是一種連接世界的窗口,更是人們獲取知識(shí)、豐富生活和實(shí)現(xiàn)個(gè)人發(fā)展的重要工具。

Windows PC持續(xù)引導(dǎo)至BIOS[修復(fù)程序] Windows PC持續(xù)引導(dǎo)至BIOS[修復(fù)程序] Mar 11, 2024 am 09:40 AM

如果您的WindowsPC頻繁進(jìn)入BIOS界面,這可能會(huì)導(dǎo)致使用困難。每次開(kāi)機(jī)都被BIOS屏幕所困擾,重新啟動(dòng)也無(wú)濟(jì)于事。如果您正面臨這個(gè)問(wèn)題,那么本文中提供的解決方案將會(huì)對(duì)您有所幫助。為什么我的電腦一直在BIOS中啟動(dòng)?您的電腦在BIOS模式下頻繁重新啟動(dòng)可能涉及多種原因,比如啟動(dòng)順序設(shè)置不當(dāng)、SATA電纜受損、連接不牢固、BIOS配置錯(cuò)誤或是硬盤故障等。修復(fù)WindowsPC持續(xù)引導(dǎo)進(jìn)入BIOS的問(wèn)題如果您的WindowsPC不斷引導(dǎo)至BIOS,請(qǐng)使用以下修復(fù)程序。檢查您的引導(dǎo)順序重新拔插內(nèi)

如何一次將所有OneDrive文件下載到PC 如何一次將所有OneDrive文件下載到PC Feb 19, 2024 pm 06:51 PM

本文將教您如何一次性將所有OneDrive文件下載到您的PC。OneDrive是一個(gè)強(qiáng)大的云存儲(chǔ)平臺(tái),方便用戶隨時(shí)隨地訪問(wèn)其文件。有時(shí),用戶可能需要在本地備份文件或離線訪問(wèn)。繼續(xù)閱讀以了解如何輕松完成這一操作。如何一次將所有OneDrive文件下載到PC?按照以下步驟一次性將所有OneDrive文件下載到您的WindowsPC:?jiǎn)?dòng)Onedrive并導(dǎo)航到我的文件。在OneDrive上上傳的所有文件都將在此處提供。按CTRL+A選擇所有文件,或選中復(fù)選框中所有項(xiàng)目的切換選擇。單擊頂部的下載選項(xiàng),

國(guó)產(chǎn)FPS新王炸!《三角洲行動(dòng)》大戰(zhàn)場(chǎng)超出預(yù)期 國(guó)產(chǎn)FPS新王炸!《三角洲行動(dòng)》大戰(zhàn)場(chǎng)超出預(yù)期 Mar 07, 2024 am 09:37 AM

《三角洲行動(dòng)》于今日(3月7日)將開(kāi)啟一場(chǎng)名為“代號(hào):ZERO”的大規(guī)模PC測(cè)試。而在上周末,這款游戲在上海舉辦了一次線下快閃體驗(yàn)活動(dòng),17173也有幸受邀參與其中。此次測(cè)試距離上一次僅僅相隔四個(gè)多月,這不禁讓我們好奇,在這么短的時(shí)間內(nèi),《三角洲行動(dòng)》將會(huì)帶來(lái)哪些新的亮點(diǎn)與驚喜?四個(gè)多月前,我已先行在線下品鑒會(huì)和首測(cè)版本中體驗(yàn)了《三角洲行動(dòng)》。當(dāng)時(shí),游戲僅開(kāi)放了“危險(xiǎn)行動(dòng)”這一模式。然而,《三角洲行動(dòng)》在當(dāng)時(shí)的表現(xiàn)已然令人矚目。在各大廠商紛紛涌向手游市場(chǎng)的背景下,如此一款與國(guó)際水準(zhǔn)相媲美的FPS

Windows 11 Lite:它是什么以及如何在您的 PC 上安裝它 Windows 11 Lite:它是什么以及如何在您的 PC 上安裝它 Apr 14, 2023 pm 11:19 PM

我們深知MicrosoftWindows11是一個(gè)功能齊全且設(shè)計(jì)吸引人的操作系統(tǒng)。但是,用戶一直要求Windows11Lite版本。盡管它提供了重大改進(jìn),但Windows11是一個(gè)資源匱乏的操作系統(tǒng),它可能很快就會(huì)使舊機(jī)器混亂到無(wú)法順利運(yùn)行的地步。本文將解決您最常問(wèn)的關(guān)于是否有Windows11Lite版本以及是否可以安全下載的問(wèn)題。跟著!有Windows11Lite版本嗎?我們正在談?wù)摰腤indows11Lite21H2版本是由Neelkalpa的T

如何在Windows PC上使用Samsung Flow 如何在Windows PC上使用Samsung Flow Feb 19, 2024 pm 07:54 PM

SamsungFlow是一個(gè)方便實(shí)用的工具,可以讓您輕松地連接Galaxy手機(jī)到WindowsPC。通過(guò)SamsungFlow,您可以方便地在設(shè)備之間共享內(nèi)容,同步通知,鏡像智能手機(jī)等。本文將介紹如何在Windows電腦上使用SamsungFlow。如何在WindowsPC上使用智能手機(jī)流要使用SamsungFlow連接WindowsPC和GalaxyPhone,需要確保您的Galaxy智能手機(jī)和平板電腦運(yùn)行Android7.0或更高版本,以及您的WindowsPC運(yùn)行Windows10或更高版

我花300塊組裝的電腦,成功跑通了本地大模型 我花300塊組裝的電腦,成功跑通了本地大模型 Apr 12, 2024 am 08:07 AM

如果說(shuō)2023年是大家公認(rèn)的AI元年,那么2024年很可能就是AI大模型普及的關(guān)鍵一年。在過(guò)去的一年中,大量的AI大模型、大量的AI應(yīng)用橫空出世,Meta、Google等廠商也開(kāi)始面向民眾推出自己的在線/本地大模型,類似于“AI人工智能”這樣遙不可及的概念,就這樣突然來(lái)到了人們身邊。如今人們?cè)谏钪性絹?lái)越多地接觸到人工智能,如果你仔細(xì)分辨,你會(huì)發(fā)現(xiàn),你所能接觸到的各類AI應(yīng)用,他們幾乎都部署在“云端”上。如果想要搭建一臺(tái)本地運(yùn)行大模型的設(shè)備,那么硬件都是售價(jià)5000元以上的全新AIPC,對(duì)于普通

See all articles