当前位置:Gxlcms > asp.net > 微信公众平台开发之认证"成为开发者".Net代码解析

微信公众平台开发之认证"成为开发者".Net代码解析

时间:2021-07-01 10:21:17 帮助过:8人阅读

.Net 实现微信公共服务平台开发的认证,认证成为开发者,具体内容如下

这些代码也就开始认证的时候用一次,以后就不用了:

  1. const string Token = "XXXXX";//你的token
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4. string postStr = "";
  5. if (Request.HttpMethod.ToLower() == "post")
  6. {
  7. System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
  8. byte[] b = new byte[s.Length];
  9. s.Read(b, 0, (int)s.Length);
  10. postStr = System.Text.Encoding.UTF8.GetString(b);
  11. if (!string.IsNullOrEmpty(postStr))
  12. {
  13. //ResponseMsg(postStr);
  14. Response.Write(ResponseMsg(postStr));
  15. Response.End();
  16. }
  17. //WriteLog("postStr:" + postStr);
  18. }
  19. else
  20. {
  21. Valid();
  22. }
  23. }
  24. /// <summary>
  25. /// 验证微信签名
  26. /// </summary>
  27. /// * 将token、timestamp、nonce三个参数进行字典序排序
  28. /// * 将三个参数字符串拼接成一个字符串进行sha1加密
  29. /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
  30. /// <returns></returns>
  31. private bool CheckSignature()
  32. {
  33. string signature = Request.QueryString["signature"].ToString();
  34. string timestamp = Request.QueryString["timestamp"].ToString();
  35. string nonce = Request.QueryString["nonce"].ToString();
  36. string[] ArrTmp = { Token, timestamp, nonce };
  37. Array.Sort(ArrTmp); //字典排序
  38. string tmpStr = string.Join("", ArrTmp);
  39. tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
  40. tmpStr = tmpStr.ToLower();
  41. if (tmpStr == signature)
  42. {
  43. return true;
  44. }
  45. else
  46. {
  47. return false;
  48. }
  49. }
  50. .private void Valid()
  51. {
  52. string echoStr = Request.QueryString["echoStr"].ToString();
  53. if (CheckSignature())
  54. {
  55. if (!string.IsNullOrEmpty(echoStr))
  56. {
  57. Response.Write(echoStr);
  58. Response.End();
  59. }
  60. }
  61. }
  62. /// <summary>
  63. /// 写日志(用于跟踪)
  64. /// </summary>
  65. private void WriteLog(string strMemo)
  66. {
  67. string filename = Server.MapPath("/logs/log.txt");
  68. if (!Directory.Exists(Server.MapPath("//logs//")))
  69. Directory.CreateDirectory("//logs//");
  70. StreamWriter sr = null;
  71. try
  72. {
  73. if (!File.Exists(filename))
  74. {
  75. sr = File.CreateText(filename);
  76. }
  77. else
  78. {
  79. sr = File.AppendText(filename);
  80. }
  81. sr.WriteLine(strMemo);
  82. }
  83. catch
  84. {
  85. }
  86. finally
  87. {
  88. if (sr != null)
  89. sr.Close();
  90. }
  91. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行