• 微信公众平台开发者中心服务器配置Token验证失败问题


    微信发展如火如荼,没有哪家的企业营销能避开微信不谈的,那像我们这种给客户实施项目的多多少少会涉及微信端的开发,本文只要给从未做过微信开发的人做一些简单的演示,行家里手们可以呵呵一下该干嘛干嘛去了。

         微信的开发网上的很多教程都是php的,如果会php的朋友可以参考这个教程:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html。那.net开发平台的伙伴就是另一条路子了,前期如何注册微信公众平台就不说了,直接到开发者中心的服务器配置。微信需要一个web站点来处理各种消息,那去服务器的IIS部署个web站点是必须的了并且将你的web站点url路径填写在下图的url地址栏里(url项里面有说明只支持80端口,听过微信开发的人肯定都知道这条规矩,部署完后要保证你的url是可以访问通的)。但对于初次开发的你来说这就完事了吗,答案显示不是。

           下图中的url上面已经说过了,token可以随便定义,EncodingAESKey可以随机生成,只是学习做demo的话消息加密方式明文就好了,点击提交你会发现token始终验证不过,这块就会云里雾里了。


        那请教过微信开发的朋友后得知这个token是需要传到后台验证后传回微信的,最简单的示例代码如下,这样你的验证就能过了。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication1
    {
        public partial class index : System.Web.UI.Page
        {
            const string Token = "TokenWeiXin";
            protected void Page_Load(object sender, EventArgs e)
            {
                string echoStr = Request.QueryString["echoStr"].ToString();
    
                if (<span style="font-family: Arial, Helvetica, sans-serif;">CheckSignature()&&</span><span style="font-family: Arial, Helvetica, sans-serif;">!string.IsNullOrEmpty(echoStr))</span>
                {
                    Response.Write(echoStr);
                    Response.End();
                }
            }
        }
    }


    当然你也得验证下该请求是来自微信服务器的你才将你的token信息返回。

     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;
                }
            }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    clear:both其实是有瑕疵的
    CSS3不遥远,几个特性你要知道
    JavaScript使用数组拼接字符串性能如何?
    CSS网页宽度怎么定比较合适
    浅析JavaScript的垃圾回收机制
    淡入淡出效果的js原生实现
    非阻塞式JavaScript脚本及延伸知识
    HTML5 Canvas圣诞树
    Ubuntu查看和自动挂载硬盘
    正则表达式批量重命名
  • 原文地址:https://www.cnblogs.com/VicTang/p/4799518.html
Copyright © 2020-2023  润新知