您遇到的 redirect_uri 参数错误
问题,主要原因如下:
从您的URL可以看出: redirect_uri=http%3A%2F%2Fwx.966120.com.cn%3A81%2Fevaluation%3Fvehicle%3D%25E7%25B2%25AC12345
问题:
- 域名 wx.966120.com.cn:81
可能未在微信公众平台配置
- 端口号 :81
在微信授权中不被支持
- 需要配置正确的授权回调域名
wx.966120.com.cn
网页授权域名:wx.966120.com.cn
在 application.yml
中配置正确的域名:yaml wechat: appId: wx70f6a7346ee842c0 appSecret: 2d6c59de85e876b7eadebeba62e5417a redirectUri: https://wx.966120.com.cn/evaluation # 使用HTTPS,无端口号
wx.966120.com.cn
域名指向您的服务器推荐工具:
- ngrok (免费版)
- natapp (国内访问更稳定)
- frp (自建)
ngrok使用步骤:
```bash
ngrok authtoken YOUR_AUTHTOKEN
ngrok http 8080
#### 2. 配置开发环境
wechat:
appId: wx70f6a7346ee842c0
appSecret: 2d6c59de85e876b7eadebeba62e5417a
redirectUri: https://your-ngrok-url.ngrok.io/evaluation
```
在网页授权域名中添加:your-ngrok-url.ngrok.io
wechat:
appId: wx70f6a7346ee842c0
appSecret: 2d6c59de85e876b7eadebeba62e5417a
redirectUri: https://wx.966120.com.cn/evaluation
# 开发环境配置
dev:
enabled: true
mockUserInfo: true
ngrokUrl: https://your-ngrok-url.ngrok.io
@Value("${wechat.dev.enabled:false}")
private boolean devModeEnabled;
@Value("${wechat.dev.mockUserInfo:false}")
private boolean mockUserInfo;
// 在生成授权URL时添加开发模式判断
if (devModeEnabled && mockUserInfo) {
// 返回模拟的授权URL,直接跳转到回调地址
String mockCode = "dev_mock_code_" + System.currentTimeMillis();
String mockRedirectUri = redirectUri + "?code=" + mockCode + "&state=" + state;
return success(Map.of("authUrl", mockRedirectUri));
}
# 检查应用配置
curl -X GET "http://localhost:8080/evaluation/wechat/authurl?redirectUri=http://wx.966120.com.cn/evaluation&state=test"
生成的URL应该是这样的格式: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx70f6a7346ee842c0&redirect_uri=https%3A%2F%2Fwx.966120.com.cn%2Fevaluation&response_type=code&scope=snsapi_userinfo&state=test#wechat_redirect
# 检查域名是否解析正确
nslookup wx.966120.com.cn
ping wx.966120.com.cn
# 检查HTTPS是否正常
curl -I https://wx.966120.com.cn
原因: 域名未在微信公众平台配置或配置错误
解决: 在微信公众平台正确配置网页授权域名
原因: 回调地址与配置的授权域名不一致
解决: 确保回调地址的域名与配置的授权域名完全一致
原因: 微信授权不支持端口号
解决: 使用反向代理,将80/443端口转发到应用端口
原因: 生产环境必须使用HTTPS
解决: 配置SSL证书,使用HTTPS协议
# 启动应用
mvn spring-boot:run
# 测试授权URL生成
curl "http://localhost:8080/evaluation/wechat/authurl?redirectUri=https://wx.966120.com.cn/evaluation&state=test"
# 使用授权码获取用户信息
curl "http://localhost:8080/evaluation/wechat/userinfo?code=YOUR_AUTH_CODE"
wechat:
appId: wx70f6a7346ee842c0
appSecret: 2d6c59de85e876b7eadebeba62e5417a
redirectUri: https://wx.966120.com.cn/evaluation
wechat:
appId: wx70f6a7346ee842c0
appSecret: 2d6c59de85e876b7eadebeba62e5417a
redirectUri: https://your-ngrok-url.ngrok.io/evaluation
dev:
enabled: true
mockUserInfo: true
按照以上步骤配置后,您的微信授权功能应该能正常工作。