微信公眾平台開發者中心服務器配置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;
            }
        }


版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM