• 微信公共服务平台开发(.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();
    }
    }

  • 相关阅读:
    第一阶段SCRUM冲刺10
    第一阶段SCRUM冲刺09
    第一阶段SCRUM冲刺08
    单词统计续
    第十一周学习报告
    第一阶段SCRUM冲刺07
    第一阶段SCRUM冲刺06
    第一阶段SCRUM冲刺05
    十天冲刺08
    十天冲刺07
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/3661097.html
Copyright © 2020-2023  润新知