1. 程式人生 > >.net core 2.x

.net core 2.x

好久不進行微信開發了,有些遺忘了,在做identity微信授權登入,所以配置下賬號。

1.環境搭建和配置;

  你可能說這個有什麼好說的,那麼問題就來了,收取按域名問題,這是個頭等問題,下面看操作:

  

  你可能會問這是啥東西,嗯,這是內網穿透的一個功能靈感源自QQ瀏覽器的外掛(已被下架)。這個東西是 NATAPP,,,自行百度,

  1.1.解決域名問題

  在其官網註冊---->登入之後----->右側選擇購買隧道---->免費,然後類似如下填寫:

  

  截圖中我有說明,所以不再寫。點選儲存之後,頁面不要關掉,需要用到上面的authtoken,然後,點選下載 根據自己機器選擇不通的版本,先別急著開啟,建立一個名稱為config.ini的檔案,和 下載的exe檔案同目錄

  複製如下配置:

#將本檔案放置於natapp同級目錄 程式將讀取 [default] 段
#在命令列引數模式如 natapp -authtoken=xxx 等相同引數將會覆蓋掉此配置
#命令列引數 -config= 可以指定任意config.ini檔案
[default]
authtoken=你的authtoken                     #對應一條隧道的authtoken
clienttoken= #對應客戶端的clienttoken,將會忽略authtoken,若無請留空,
log=none #log 日誌檔案,可指定本地檔案, none=不做記錄,stdout=直接螢幕輸出 ,預設為none
loglevel=ERROR #日誌等級 DEBUG, INFO, WARNING, ERROR 預設為 DEBUG
http_proxy= #代理設定 如 http://10.123.10.10:3128 非代理上網使用者請務必留空

   此時再雙擊 .exe的工具即可

  執行結果如開篇見到的結果。

   1.2.修改專案中的配置

  專案修改如下(右擊專案---->屬性):

  

  這時候再F5拋起我們的專案就行了,完美解決了無需釋出、無需域名 就可以直接進行微信開發測試。

  跑起專案結果:

  

  使用的域名就是natapp給我們生成的。

  1.3.微信測試配置

  測試賬號地址:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

  測試配置:

  

   這裡有第一個關卡需要闖過,就是這個URL,和token的配置,,,不測試下,,鬼知道怎麼配。

  先看我們的API中的 最後一個介面(上截圖中的最後一個),程式碼如下:

/// <summary>
        ///     微信測試token驗證地址
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public async Task<IActionResult> CheckSignature()
        {
            var signature = HttpContext.Request.Params("signature");
            var echostr = HttpContext.Request.Params("echostr");
            var timestamp = HttpContext.Request.Params("timestamp");
            var nonce = HttpContext.Request.Params("nonce");

            string[] ArrTmp = { AppSettingManager.Get("ESoftor:Jwt:Secret"), timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            //tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = Security.HashHelper.GetSha1(tmpStr);
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                return await Task.FromResult(Content(echostr));
            }
            return await Task.FromResult(Content(""));
        }
View Code

  這個介面就是用來驗證這個sign的,演算法規則是WX官方定義的,,,你也可以直接複製我這個,完全OK。

  然後跑起我們的專案,並在 if判斷等於的那裡 加上斷點,這時候回到微信配置,輸入 域名+api/controller名稱/action名稱,我這裡是 http://9zdkkz.natappfree.cc/api/Identity/CheckSignature

  並填寫token(隨便寫),但是要和你計算 sign的時候使用的一樣,也就是我配置在 配置檔案中的AppSettingManager.Get("ESoftor:Jwt:Secret")的值

  然後點選 微信配置的 提交,這時候就會進入我們的專案 並被端點到。

  嗯,完美。