這篇文章主要介紹了微信公眾號(hào)服務(wù)器驗(yàn)證Token步驟圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
成都創(chuàng)新互聯(lián)公司長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為咸豐企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),咸豐網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。服務(wù)器驗(yàn)證Token驗(yàn)證分為以下及步驟
一,在微信公眾號(hào)平臺(tái)上設(shè)置
1.1打開微信公眾號(hào)平臺(tái)
1.2打開”開發(fā)“中的<基本配置>
1.3點(diǎn)擊基本配置頁面里的修改配置
url填寫:http://外網(wǎng)IP:端口號(hào)/wx 。外網(wǎng)IP請(qǐng)到騰訊云購買成功處查詢, http的端口號(hào)固定使用80,不可填寫其他。
Token:自主設(shè)置,這個(gè)token與公眾平臺(tái)wiki中常提的access_token不是一回事。這個(gè)token只用于驗(yàn)證開發(fā)者服務(wù)器。(注:Token可以隨便寫 寫完記住留著備用)
EncodingAESKey:點(diǎn)擊隨機(jī)生成
二,編寫后臺(tái)程序
我選用的是web,ashx一般處理程序頁面
代碼源碼:
namespace WEF { ////// Token 的摘要說明 /// public class Token : IHttpHandler { public void ProcessRequest(HttpContext context) { ProcesyanzhengsRequest(context);//執(zhí)行下面方法 } public bool IsReusable { get { return false; } } public void ProcesyanzhengsRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string token = " ";//輸入你上面自己編寫的Token if (string.IsNullOrEmpty(token)) { return; } //取到Token接收到的值 string echoString = HttpContext.Current.Request.QueryString["echoStr"]; string signature = HttpContext.Current.Request.QueryString["signature"]; string timestamp = HttpContext.Current.Request.QueryString["timestamp"]; string nonce = HttpContext.Current.Request.QueryString["nonce"]; if (CheckSignature(token, signature, timestamp, nonce)) //判斷驗(yàn)證是否正確 { if (!string.IsNullOrEmpty(echoString)) 正確返回微信服務(wù)器 { HttpContext.Current.Response.Write(echoString); HttpContext.Current.Response.End(); } } } ////// 驗(yàn)證微信簽名 /// public static bool CheckSignature(string token, string signature, string timestamp, string nonce) { string[] ArrTmp = { token, timestamp, nonce }; //字典排序 Array.Sort(ArrTmp); //拼接 string tmpStr = string.Join("", ArrTmp); //sha1驗(yàn)證 tmpStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); //tmpStr = Membership.CreateUser(tmpStr, "SHA1"); tmpStr = tmpStr.ToLower(); if (tmpStr == signature) //如果計(jì)算后得到的數(shù)值與傳過來的數(shù)值相等 { return true; //返回正確 } else { return false; //不相等 返回錯(cuò)誤 } } } }