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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

c#微信公众号开发一----基本设置,服务器配置token验证,获取timestamp/nonce/signature

發(fā)布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 c#微信公众号开发一----基本设置,服务器配置token验证,获取timestamp/nonce/signature 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、c#微信公眾號開發(fā)----基本設置

參考微信官方文檔

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

開發(fā)→基本配置

公眾號開發(fā)信息

注:1.記錄好開發(fā)者密碼,會在程序中驗證過程中使用到。

2.通過appid和appsecret調用access_token時,至有在ip白名單的ip才能成功調用。

服務器配置

若此處開啟服務器配置,設置的自動回復和自定義菜單將全部失效。必須在程序中重寫相關方法。

點擊修改配置,token為隨意填寫的參數(shù)

我是用的是一般處理程序編寫的微信接口token驗證,參數(shù)參考官方文檔。代碼如下:

開發(fā)者通過檢驗signature對請求進行校驗。若確認此次GET請求來自微信服務器,請原樣返回echostr參數(shù)內容,則接入生效,成為開發(fā)者成功,否則接入失敗。加密/校驗流程如下:

1)將token、timestamp、nonce三個參數(shù)進行字典序排序

2)將三個參數(shù)字符串拼接成一個字符串進行sha1加密

3)開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信。

 1 public void ProcessRequest(HttpContext context){
 2     //驗證token
 3     string postString = string.Empty;
 4     string token ="aabbcc";   //驗證token,隨意填寫  
 5     if(string.IsNullEmpty(token)){
 6         return ;
 7     }
 8     string echoString = HttpContext.Current.Request.QueryString["echoStr"];
 9     string signature = HttpContext.Current.Request.QueryString["sianature"];
10     string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
11     string nonce = HttpContext.Current.Request.QueryString["nonce"];
12     if(CheckSignature(token,signature,timestamp,nonce)){
13         if(!string.IsNullOrEmpty(echiString)){
14           HttpContext.Current.Response.Write(echoString);
15           HttpContext.Current.Response.End();
16        } 
17     }
18 }
 1          /// <summary>
 2         /// 驗證微信簽名
 3         /// </summary>
 4         /// <param name="token">token</param>
 5         /// <param name="signature">簽名</param>
 6         /// <param name="timestamp">時間戳</param>
 7         /// <param name="nonce">隨機數(shù)</param>
 8         /// <returns></returns>
 9         public static bool CheckSignature(string token,
10  string signature, string timestamp, string nonce)
11         {
12             string[] ArrTmp = { token, timestamp, nonce };
13             //字典排序
14             Array.Sort(ArrTmp);
15             //拼接
16             string tmpStr = string.Join("", ArrTmp);
17             //sha1驗證
18             tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
19             //tmpStr = Membership.CreateUser(tmpStr, "SHA1");
20             tmpStr = tmpStr.ToLower();
21 
22             if (tmpStr == signature)
23             {
24                 return true;
25             }
26             else
27             {
28                 return false;
29             }
30         }

將編寫的代碼路徑,填寫到url里,前面填寫的“aabbcc”,此時token里填寫的也必須為“aabbcc”。

token必須保持一致,若不一致會彈出提示。

二、獲取timestamp/nonce/signature

timestamp時間戳

public static string timestamp(){
   TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
   return Convert.ToInt64(ts.TotalSeconds).ToString();
}

nonce隨機數(shù)

public static string getNoncestr(){
   Random random = new Random();
   return Md5Util.GetMD5(random.Next(1000).ToString(),”GBK”).ToLower().Replace(“s”,”S”);
}

signature隨機數(shù)

public static string Signature(string token, string timestamp, string nonce){
   string[] ArrTmp = { token, timestamp, nonce };
   //字典排序
   Array.Sort(ArrTmp);
   //拼接
   string tmpStr = string.Join("", ArrTmp);
   //sha1驗證
   tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
   tmpStr = tmpStr.ToLower();
   return tmpStr;
}

總結

以上是生活随笔為你收集整理的c#微信公众号开发一----基本设置,服务器配置token验证,获取timestamp/nonce/signature的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。