zoukankan      html  css  js  c++  java
  • 微信公共服务平台开发(.Net 的实现)1-------认证“成为开发者”

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

    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>
    /// 验证微信签名
    /// </summary>
    /// * 将token、timestamp、nonce三个参数进行字典序排序
    /// * 将三个参数字符串拼接成一个字符串进行sha1加密
    /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
    /// <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>
    /// 写日志(用于跟踪)
    /// </summary>
    private void WriteLog(string strMemo)
    {
    string filename = Server.MapPath("/logs/log.txt");
    if (!Directory.Exists(Server.MapPath("//logs//")))
    Directory.CreateDirectory("//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();
    }
    }

  • 相关阅读:
    HDU 3564 Another LIS
    POJ 2104 K-th Number
    HYSBZ 1901 Dynamic Rankings
    HYSBZ 4321 queue2
    HYSBZ 3991 寻宝游戏
    工作中使用到的的MonogoDB查询语句记录。
    工作中使用到的的MySQL查询语句记录。
    python对文本文件的读写操作
    WRK的使用-lua脚本POST请求(静态数据)
    WRK的使用-lua脚本GET请求
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/3661097.html
Copyright © 2011-2022 走看看