一、問題的背景
今天收到集團業(yè)務(wù)員反饋系統(tǒng)的問題,企業(yè)微信掃描登錄后無法轉(zhuǎn)到系統(tǒng)的主頁。錯誤屏幕截圖如下:圖中返回的HTTP狀態(tài)代碼為500,表明系統(tǒng)中存在內(nèi)部應(yīng)用程序服務(wù)器錯誤。我懷疑接收分析企業(yè)微信數(shù)據(jù)有異常。
企業(yè)微信報錯信息
二、故障排查
企業(yè)微信授權(quán)登錄流程
由于我司后臺使用的是微服務(wù)架構(gòu)(用戶-》網(wǎng)關(guān)-》授權(quán)-》微信消息服務(wù)),由于用戶鑒權(quán)在”授權(quán)“服務(wù)處理,所以先從"授權(quán)"服務(wù)的日志排查,發(fā)現(xiàn)有返回ERROR信息
2022-05-23 16:36:48.870 [10] [http-nio-8080-exec-11] DEBUG [] [TID:5b3a618684cb4d8d98916b8dbf43c508.1072154.16532950082798953] org. "ERROR" dispatch for GET "/error?appCode=XXX&toPath=/&code=YYYY&state=/", parameters={masked}
并且發(fā)現(xiàn)日志中的用戶名居然為NULL(如下圖所示)
授權(quán)服務(wù)日志
該用戶名是企業(yè)微信授權(quán)登錄請求返回的,由此根據(jù)問題跟蹤號TID(TID:5b3a618684cb4d8d98916b8dbf43c508.1072154.16532950082798953)在微信消息服務(wù)的日志中發(fā)現(xiàn)調(diào)用企業(yè)微信的日志({"DeviceId":"c527a5ac24257ecaff5840500f4c9a82","errcode":0,"errmsg":"ok","OpenId":"oUzxxxxxxxxxxxxxxxxx"}),如下所示,報文僅返回openid,未返回UserId,故給授權(quán)服務(wù)返回的用戶名為NULL,引起系統(tǒng)異常。
2022-05-23 16:36:48.523 [10] [http-nio-8080-exec-10] INFO [45009a2f3d3e429aa35f7e1de6cb0df6] [TID:5b3a618684cb4d8d98916b8dbf43c508.1072154.16532950082798953] com.xxxx.yyyyy. =====>獲取企業(yè)微信用戶,請求地址=HTTPS://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=xxxxx&code=yyyyy
2022-05-23 16:36:48.816 [10] [http-nio-8080-exec-10] INFO [45009a2f3d3e429aa35f7e1de6cb0df6] [TID:5b3a618684cb4d8d98916b8dbf43c508.1072154.16532950082798953] com.xxxx.yyyyy. <=====獲取企業(yè)微信用戶,響應(yīng)數(shù)據(jù)={"DeviceId":"c527a5ac24257ecaff5840500f4c9a82","errcode":0,"errmsg":"ok","OpenId":"oUzxxxxxxxxxxxxxxxxx"}!
三、問題解決
通過排查官方的技術(shù)文檔(),獲取用戶信息,在非企業(yè)成員時,會返回OpenId,
企業(yè)微信獲取訪問用戶身份接口描述
在官方文檔上面使用全文檢索OpenId,發(fā)現(xiàn)存在如下接口,可將OpenId轉(zhuǎn)化成UserId
請求方式:POST(HTTPS)
請求地址:
請求示例:
{
"openid": "oDjGHs-1yCnGrRovBj2yHij5JAAA"
}
返回信息:
{
"errcode": 0,
"errmsg": "ok",
"userid": "zhangsan"
}
參數(shù) 說明
errcode 返回碼
errmsg 對返回碼的文本描述內(nèi)容
userid 該openid在企業(yè)微信對應(yīng)的成員userid
使用ApiFox工具進行快捷請求驗證測試,發(fā)現(xiàn)該接口可滿足使用:
OpenId與UserId轉(zhuǎn)換
四、總結(jié)
1、故障排查需要沉下心做,了解用戶出現(xiàn)的故障,分析應(yīng)用日志,不放過相關(guān)聯(lián)的任何一個蛛絲馬跡,有涉及到外圍系統(tǒng)的交易場景,對方的接口要了解仔細,如上所過的企業(yè)微"獲取訪問用戶身份"接口,有兩種報文返回場景:企業(yè)成員和非企業(yè)成員返回,由于代碼未處理非企業(yè)成員的邏輯,引發(fā)了如上所述問題。最終,在代碼中添加如果非企業(yè)成員返回時,再調(diào)用一次"OpenId轉(zhuǎn)換UserId"接口,成功獲取到用戶ID,問題得到解決。
2、經(jīng)與用戶溝通,該最終用戶是由于個人微信賬號沒有關(guān)注集團公眾號,直接用個人微信掃碼登錄應(yīng)用,故企業(yè)微信接口按"非企業(yè)成員"返回數(shù)據(jù),經(jīng)過實踐驗證,個人關(guān)注后,問題也能得到解決
1.《微信驗證失敗怎么登陸不了怎么辦???終于找到答案了SpringCloud微服務(wù)架構(gòu)企業(yè)微信服務(wù)無法獲取登錄信息故障排查》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《微信驗證失敗怎么登陸不了怎么辦???終于找到答案了SpringCloud微服務(wù)架構(gòu)企業(yè)微信服務(wù)無法獲取登錄信息故障排查》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/2975178.html