.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")的值
然後點選 微信配置的 提交,這時候就會進入我們的專案 並被端點到。
嗯,完美。