日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

用微信二维码登录自己的网站

發(fā)布時間:2023/12/13 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 用微信二维码登录自己的网站 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

地址:http://www.cnblogs.com/loogn/p/3727953.html

用微信二維碼登錄自己的網(wǎng)站

一、當(dāng)用戶選擇用微信二維碼登錄時,我們要在用戶頁面里生成一個guid做為客戶端的唯一標(biāo)識,然后帶著這個guid請求二維碼圖片地址,得到地址后,顯示給用戶。請求到后臺的時候要將此二維碼的Key和客戶端的guid關(guān)聯(lián)到一起。注意這個key的生成方式,要保證多人同時用二維碼登錄而不沖突,比如用10000自增,隔斷時間又重置到10000。

二、得到二維碼后,馬上發(fā)出長鏈接請求登錄標(biāo)識(即cookie),請求也要帶客戶端的guid。在寫此文之前聽一同事說Discuz!已實現(xiàn)了二維碼登錄,我更看一下,和我的思路應(yīng)該是一樣的,不過他們用的是輪詢的方式,但效果沒長鏈接好,沒這個及時。

三、用戶掃描二維碼后,我們可以在實現(xiàn)的通知接口里得到這個事件消息,消息里的FromUserName一般就是我們綁定第三方的openid,根據(jù)這個我們可以查出綁定用戶的userid,即cookie,再用二維碼的key,得到未返回的長鏈接,然后把userid返回,把長鏈接相關(guān)的東西清除。

異步請求結(jié)果類:

publicclassQRLoginManager {publicstaticDictionary<string, MyAsyncResult> RequestDict =newDictionary<string, MyAsyncResult>(); }publicclassMyAsyncResult : IAsyncResult {//這個接口的實現(xiàn)publicobjectAsyncState {get;privateset; }publicSystem.Threading.WaitHandle AsyncWaitHandle {get;privateset; }publicboolCompletedSynchronously {get{returnfalse; } }publicboolIsCompleted {get;privateset; }//一些參數(shù)publicHttpContext Context {get;set; }publicAsyncCallback CallBack {get;set; }///<summary>///客戶端唯一標(biāo)識///</summary>publicstringClientGuid {get;set; }///<summary>///最終要的標(biāo)識數(shù)據(jù)///</summary>publicstringUserID {get;set; }//構(gòu)造函數(shù)publicMyAsyncResult(HttpContext context, AsyncCallback cb,stringclientGuid) {this.ClientGuid =clientGuid;this.Context =context;this.CallBack =cb; }publicvoidSetCompleted(booliscompleted) {this.IsCompleted =iscompleted;if(iscompleted &&this.CallBack !=null) { CallBack(this); } } }

微信接口前面已發(fā)布源碼:WeiXinSDK

頁面JS代碼大概可以是:

<script type="text/javascript">functionnewGuid() {varguid = "";for(vari = 1; i <= 32; i++) {varn = Math.floor(Math.random() * 16.0).toString(16); guid+=n;if((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid+= "-"; }returnguid; }varclientid =newGuid();functiongetQR() { $.get("/getqr.ashx?clientguid=" + clientid,function(url) { $("#qrImg").attr("src", url);//顯示圖片后請求userid;$.ajax('/getdt.ashx', { data: { clientguid: clientid }, cache:false, success:function(userid) {//把userid寫入cookie}, error:function(xhr, status, err) {//可能要重新獲得二維碼圖片地址} }); }) }</script>

非常抱歉的是,以上的代碼全部沒有測試過,僅供大家理清思路參考,各種不規(guī)則和不嚴禁還請見諒!

分類:ASP.NET,JavaScript
標(biāo)簽:微信二維碼登錄

如果一件事情你覺得難的完不成,你可以把它分為若干步,并不斷尋找合適的方法。最后你發(fā)現(xiàn)你會是個超人。不要給自己找麻煩,但遇到麻煩絕不怕,更不要退縮。
電工查找電路不通點的最快方法是:分段診斷排除,快速定位。你有什么啟示嗎?
求知若饑,虛心若愚。
當(dāng)你對一個事情掌控不足的時候,你需要做的就是“梳理”,并制定相應(yīng)的規(guī)章制度,并使資源各司其職。

總結(jié)

以上是生活随笔為你收集整理的用微信二维码登录自己的网站的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。