企业微信:授权失败排查 01 📅 2026/8/19 22:14:47 前言当前是重构之前的项目未走OAuth标准登录通过用户硬编码登录docker中的nginx为映射到宿主机上项目场景创建企业微信第三方应用采用 OAuth2.0 授权码模式的标准行为code是一次性的。补充同时 code 也是有时效性的。问题描述访问自定义企业微信第三方应用“ 授权的code显示失败 ”。使用抓包工具获取用户信息身份的接口返回 errcode:50001表示 redirect_uri unauthorized原因分析1. 先确认企业微信管理后台对应的应用是否设置了网页授权及JS-SDK的可信域名2. 思考redirect_uri 是前端登录跳转时才用到的参数为什么后端接口会报错关联Code接口使用的 code 来自前端登录时生成的。问题定位1code的获取即微信后台配置的可信配置域名和实际OAuth的redirect_uri间的匹配3. 监控微信验证请求18006# server块放在 location /prod-api 之前 access_log /var/log/nginx/18002.access.log combined; error log /var/log/nginx/18002.error.log notice; location /可信域名验证文件.txt { default_type text/plain; return 200 文件内容; }通过日志access.log、error.log 监控微信验证请求的访问记录途径一默认日志途径二自定义日志相关测试命令结果日志没有任何内容。说明微信验证机器人未走18006端口可能走标准端口80# 请求验证文件命令 curl -I http://ip:18006/可信域名验证文件.txt # 查看请求日志命令 tail -f /var/log/nginx/18006.access.log | grep -i ww_verify4. 监控微信验证请求8080端口的验证文件配置完成且可正常访问后再次测试接口发现50001错误依然存在。排查路线出现分叉问题关键点可信域名的配置 是否 应带端口号使用非标准端口时微信要求可信域名必须带端口号不能只填裸域名微信后台反复修改域名测试结果相同不通过80端口配置出现问题排查配置引起的冲突导致nginx重启失败问题关键转折验证可信域名流程如下获取access_token - 寻找企业微信应用 - code会携带redirect_uri - 验证应用中的可信域名列表问题定位2获取access_token阶段可能存在问题即生产环境程序包的secret凭证错误解决方案更新后端中 secret 硬编码为新应用的凭证快速验证# 步骤1: 测试新 secret 能否拿到 token curl https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpidxxxxcorpsecret应用的secret # 步骤2: 用拿到的 token code 测试 getuserinfo curl https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_tokenTOKENcodeCODE如果测试 getuserInfo 的数据传输返回60020说明新Agent的IP白名单不含当前服务器 IP修复在企业可信IP配置项中添加服务器的IP辅助Linux命令# 解压到临时目录检查class文件中的字符串【strings 从二进制文件中提取所有可读字符串】 cd /tmp jar xf /path/xxx.jar BOOT-INF/classes/ \ strings BOOT-INF/classes/path/yyy.class | grep -i secret\|1QEQDC\|Hjtmck