微信公眾平臺(tái)開(kāi)發(fā)之認(rèn)證"成為開(kāi)發(fā)者".Net代碼解析
.Net 實(shí)現(xiàn)微信公共服務(wù)平臺(tái)開(kāi)發(fā)的認(rèn)證,認(rèn)證成為開(kāi)發(fā)者,具體內(nèi)容如下
這些代碼也就開(kāi)始認(rèn)證的時(shí)候用一次,以后就不用了:
const string Token = "XXXXX";//你的token
protected void Page_Load(object sender, EventArgs e)
{
string postStr = "";
if (Request.HttpMethod.ToLower() == "post")
{
System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
byte[] b = new byte[s.Length];
s.Read(b, 0, (int)s.Length);
postStr = System.Text.Encoding.UTF8.GetString(b);
if (!string.IsNullOrEmpty(postStr))
{
//ResponseMsg(postStr);
Response.Write(ResponseMsg(postStr));
Response.End();
}
//WriteLog("postStr:" + postStr);
}
else
{
Valid();
}
}
/// <summary>
/// 驗(yàn)證微信簽名
/// </summary>
/// * 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
/// * 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
/// * 開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信。
/// <returns></returns>
private bool CheckSignature()
{
string signature = Request.QueryString["signature"].ToString();
string timestamp = Request.QueryString["timestamp"].ToString();
string nonce = Request.QueryString["nonce"].ToString();
string[] ArrTmp = { Token, timestamp, nonce };
Array.Sort(ArrTmp); //字典排序
string tmpStr = string.Join("", ArrTmp);
tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
tmpStr = tmpStr.ToLower();
if (tmpStr == signature)
{
return true;
}
else
{
return false;
}
}
.private void Valid()
{
string echoStr = Request.QueryString["echoStr"].ToString();
if (CheckSignature())
{
if (!string.IsNullOrEmpty(echoStr))
{
Response.Write(echoStr);
Response.End();
}
}
}
/// <summary>
/// 寫(xiě)日志(用于跟蹤)
/// </summary>
private void WriteLog(string strMemo)
{
string filename = Server.MapPath("/logs/log.txt");
if (!Directory.Exists(Server.MapPath("http://logs//")))
Directory.CreateDirectory("http://logs//");
StreamWriter sr = null;
try
{
if (!File.Exists(filename))
{
sr = File.CreateText(filename);
}
else
{
sr = File.AppendText(filename);
}
sr.WriteLine(strMemo);
}
catch
{
}
finally
{
if (sr != null)
sr.Close();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- .Net微信開(kāi)發(fā)之如何解決access_token過(guò)期問(wèn)題
- 微信公眾平臺(tái)開(kāi)發(fā)之語(yǔ)音識(shí)別.Net代碼解析
- 微信公眾平臺(tái)開(kāi)發(fā)之獲得ACCESSTOKEN .Net代碼解析
- ASP.NET實(shí)現(xiàn)QQ、微信、新浪微博OAuth2.0授權(quán)登錄
- asp.net實(shí)現(xiàn)微信公眾賬號(hào)接口開(kāi)發(fā)教程
- ASP.NET微信開(kāi)發(fā)(接口指南)
- asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)圖文)
- asp.net微信開(kāi)發(fā)(已關(guān)注用戶管理)
- asp.net微信開(kāi)發(fā)(開(kāi)發(fā)者接入)
- 微信公眾號(hào)支付(MVC版本)
相關(guān)文章
asp.net 未能寫(xiě)入輸出文件--“拒絕訪問(wèn)的解決辦法
這個(gè)是網(wǎng)站部署在IIS7上出現(xiàn)的一個(gè)問(wèn)題2012-12-12
動(dòng)態(tài)代理的5模式使用示例和Mixin模式
什么叫"動(dòng)態(tài)代理",代理模式我們都知道,動(dòng)態(tài)代理就是動(dòng)態(tài)生成的代理(采用Emit)。5種代理模式:ClassProxy、ClassProxyWithTarget、InterfaceProxyWithoutTarget、InterfaceProxyWithTarget、InterfaceProxyWithTargetInterface、Mixin模式2013-11-11
asp.net 防止用戶通過(guò)后退按鈕重復(fù)提交表單
經(jīng)過(guò)一番仔細(xì)的尋尋覓覓之后,我發(fā)現(xiàn)仍舊無(wú)法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁(yè)面,但它們都有各自的局限。2009-11-11
.NET 刷新頁(yè)面防止表單二次提交的實(shí)現(xiàn)方法
頁(yè)面上按鈕是服務(wù)器控件,現(xiàn)在刷新頁(yè)面要防止按鈕事件重復(fù)執(zhí)行。這篇文章給大家?guī)?lái)了.net刷新頁(yè)面防止表單二次提交的實(shí)現(xiàn)方法,非常不錯(cuò),感興趣的朋友一起看看吧2016-09-09
win7系統(tǒng)下 vs2010 調(diào)式就關(guān)閉要重啟處理方法
最近經(jīng)常出現(xiàn)只要一使用vs2010進(jìn)行調(diào)試,就提示關(guān)閉并要重啟,好煩,度娘了半天,總結(jié)下來(lái)解決方法,親測(cè)可用哦。2014-08-08
.Net Core使用Socket與樹(shù)莓派進(jìn)行通信詳解
這篇文章主要為大家詳細(xì)介紹了.Net Core使用Socket與樹(shù)莓派進(jìn)行通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
asp.net根據(jù)計(jì)算機(jī)MAC地址限定每臺(tái)機(jī)子只能領(lǐng)取一次賬號(hào)
這里只做簡(jiǎn)單演示過(guò)程,請(qǐng)根據(jù)您的實(shí)際情況作適當(dāng)修改!另外我的博客只做自己參考查詢方便用,請(qǐng)各位大神不要沒(méi)事噴我,知道您的技術(shù)高,我是新手正在努力學(xué)習(xí)當(dāng)中,謝謝2012-06-06
ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用實(shí)例
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用,實(shí)例分析了使用Forms進(jìn)行WebService身份認(rèn)證的相關(guān)技巧與實(shí)現(xiàn)方法,需要的朋友可以參考下2015-05-05

