一、问题的背景

今天收到集团业务员反馈系统的问题,企业微信扫描登录后无法转到系统的主页。错误屏幕截图如下:图中返回的HTTP状态代码为500,表明系统中存在内部应用程序服务器错误。我怀疑接收分析企业微信数据有异常。

企业微信报错信息

二、故障排查

企业微信授权登录流程

由于我司后台使用的是微服务架构(用户-》网关-》授权-》微信消息服务),由于用户鉴权在”授权“服务处理,所以先从"授权"服务的日志排查,发现有返回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}

并且发现日志中的用户名居然为NULL(如下图所示)

授权服务日志

该用户名是企业微信授权登录请求返回的,由此根据问题跟踪号TID(TID:5b3a618684cb4d8d98916b8dbf43c508.1072154.16532950082798953)在微信消息服务的日志中发现调用企业微信的日志({"DeviceId":"c527a5ac24257ecaff5840500f4c9a82","errcode":0,"errmsg":"ok","OpenId":"oUzxxxxxxxxxxxxxxxxx"}),如下所示,报文仅返回openid,未返回UserId,故给授权服务返回的用户名为NULL,引起系统异常。

2022-05-23 16:36:48.523 [10] [http-nio-8080-exec-10] INFO [45009a2f3d3e429aa35f7e1de6cb0df6] [TID:5b3a618684cb4d8d98916b8dbf43c508.1072154.16532950082798953] com.xxxx.yyyyy. =====>获取企业微信用户,请求地址=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. <=====获取企业微信用户,响应数据={"DeviceId":"c527a5ac24257ecaff5840500f4c9a82","errcode":0,"errmsg":"ok","OpenId":"oUzxxxxxxxxxxxxxxxxx"}!

三、问题解决

通过排查官方的技术文档(),获取用户信息,在非企业成员时,会返回OpenId,

企业微信获取访问用户身份接口描述

在官方文档上面使用全文检索OpenId,发现存在如下接口,可将OpenId转化成UserId

请求方式:POST(HTTPS)

请求地址:

请求示例:

{

"openid": "oDjGHs-1yCnGrRovBj2yHij5JAAA"

}

返回信息:

{

"errcode": 0,

"errmsg": "ok",

"userid": "zhangsan"

}

参数 说明

errcode 返回码

errmsg 对返回码的文本描述内容

userid 该openid在企业微信对应的成员userid

使用ApiFox工具进行快捷请求验证测试,发现该接口可满足使用:

OpenId与UserId转换

四、总结

1、故障排查需要沉下心做,了解用户出现的故障,分析应用日志,不放过相关联的任何一个蛛丝马迹,有涉及到外围系统的交易场景,对方的接口要了解仔细,如上所过的企业微"获取访问用户身份"接口,有两种报文返回场景:企业成员和非企业成员返回,由于代码未处理非企业成员的逻辑,引发了如上所述问题。最终,在代码中添加如果非企业成员返回时,再调用一次"OpenId转换UserId"接口,成功获取到用户ID,问题得到解决。

2、经与用户沟通,该最终用户是由于个人微信账号没有关注集团公众号,直接用个人微信扫码登录应用,故企业微信接口按"非企业成员"返回数据,经过实践验证,个人关注后,问题也能得到解决

1.《微信验证失败怎么登陆不了怎么办啊?终于找到答案了SpringCloud微服务架构企业微信服务无法获取登录信息故障排查》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《微信验证失败怎么登陆不了怎么办啊?终于找到答案了SpringCloud微服务架构企业微信服务无法获取登录信息故障排查》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2975178.html