授权回传确定性修复:requestProfile/goAuth 跳授权页时把当前 H5 地址作 backUrl 带给授权页(navigateTo query 通道,不赌 postMessage 派发时机);版本 v26091901

This commit is contained in:
2026-09-19 16:55:42 +08:00
parent 627a819e46
commit d39e52cf4f
2 changed files with 21 additions and 3 deletions

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26091802';
var VER = '26091901';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
@@ -4577,7 +4577,13 @@
window.wx.miniProgram.getEnv(function (r) {
responded = true;
if (r && r.miniprogram) {
window.wx.miniProgram.navigateTo({ url: '/pages/annex/auth/index' });
/* 带上 backUrl(当前地址)→ 授权页写进 __AUTH_RESULT__ → 宿主优先按它
回传:从哪个 H5 触发的授权就回到哪个 H5(不赌 postMessage 派发时机)。 */
var u = '/pages/annex/auth/index';
try {
u += '?backUrl=' + encodeURIComponent(location.href);
} catch (e) {}
window.wx.miniProgram.navigateTo({ url: u });
} else {
toast('请在小程序中完成授权登录');
}

View File

@@ -69,8 +69,20 @@
requestProfile: function (authPage) {
var self = this;
function nav() {
/* 把「发起授权的当前 H5 地址」经 navigateTo query 带给授权页(backUrl)——
与 openid 同一条可靠通道(navigateTo onLoad 必达),不依赖 postMessage
(微信只在后退/销毁/分享时批量派发,时序不可靠:宫格 location.href 换应用后,
宿主记的 shareHref 可能还是上一个应用的地址,授权结果被送回错的地方)。
授权页把 backUrl 写进 __AUTH_RESULT__,宿主 onShow 优先用它做回传基址:
从哪个 H5 触发的授权,授权后就回到哪个 H5。 */
var url = authPage || '/pages/annex/auth/index';
var backUrl = '';
try { backUrl = location.href; } catch (e) {}
if (backUrl) {
url += (url.indexOf('?') !== -1 ? '&' : '?') + 'backUrl=' + encodeURIComponent(backUrl);
}
window.wx.miniProgram.navigateTo({
url: authPage || '/pages/annex/auth/index',
url: url,
/* 页面不存在 / 页面栈超限(>10层) 时 navigateTo 是静默失败 —— 必须自己兜住并提示,
否则用户只看到「正在打开授权页…」后再无反应,无从排查。 */
fail: function (err) {