fix: 小程序服务号绑定先打开门户域名再跳转微信授权。

web-view 不能直接打开 open.weixin.qq.com,移动端改为打开已配置的业务域名中转页。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-10-29 01:44:40 +08:00
1 parent 459b820f95
commit e7c1762113
7 files changed
+137 -8

No files matched your search

+1 -1
View File
@@ -72,7 +72,7 @@ WECHAT_OA_CERT_REMINDER_MINUTE=0
### 小程序内绑定上线与验收
- 保持现有服务号网页授权域名与回调配置,另将回调所在HTTPS域名配置为小程序的业务域名;小程序须具备web-view使用资格。参考[腾讯官方域名配置说明](https://cloud.tencent.com.cn/document/product/1301/100434)及[uni-app web-view说明](https://uniapp.dcloud.io/component/web-view.html)。回调域名若不能在小程序中打开,授权页会失败,需管理员配置;不能仅凭本地编译认定真机授权成功。
- 新页面 `pages/common/wechat-binding-authorize` 仅从当前关注页通过EventChannel取得服务端签发的官方授权URL,等待onReady再挂载。登录JWT、服务号OpenID和AppSecret不放进路由参数或本地存储;不接受任意URL query作为web-view来源。
- 新页面 `pages/common/wechat-binding-authorize` 仅从当前关注页通过EventChannel取得服务端签发的门户中转地址(`/api/public/wechat-notices/oauth/launch`),等待onReady再挂载。web-view 不能直接打开 `open.weixin.qq.com`,中转页位于已配置的业务域名,再跳到微信授权。登录JWT、服务号OpenID和AppSecret不放进路由参数或本地存储;不接受任意URL query作为web-view来源。
- 小程序发起会话传 `{mode: "mobile"}`,服务端记录模式;电脑无请求体时默认 desktop,仍保留验证码人工确认。移动回调页 `backend/app/templates/wechat-binding-mobile.html` 使用固定官方 JS SDK 地址 `https://res.wx.qq.com/open/js/jweixin-1.6.0.js` 和 nonce CSP,尝试 `wx.miniProgram.navigateBack` 返回上一页,不跳转首页以免丢失发起会话。部署时须包含该模板文件。SDK 或桥接失败时显示返回按钮、左上角返回提示。
- 返回后仅对当前登录用户在本页主动发起且授权、关注均完成的会话自动提交确认;普通进入页面不会自动发起绑定。失败可刷新重试,过期或未关注可重新授权;切换账号或离开页面后忽略旧异步响应。关闭/重新进入页面可重新发起会话。
- 真机验收:关注→一键绑定当前账号→网页授权→自动返回→自动绑定;桥接异常时左上角返回仍应完成绑定,再次进入显示已绑定;验证未关注、授权取消、会话过期、账号切换、重复点击和重复微信冲突。未作真机授权或发布。