uni-app 使用打的自定义调试基座(带原生插件)或云打包时,授权返回会多出一个页面,点返回后才能回到登录页面,此时无法获取授权回调
uni-app 使用打的自定义调试基座(带原生插件)或云打包时,授权返回会多出一个页面,点返回后才能回到登录页面,此时无法获取授权回调
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | Mac OS 12.3 | HBuilderX |
示例代码:
uni.login({
provider: 'weixin',
onlyAuthorize: true, // 微信登录仅请求授权认证
success: function (event) {
const { code } = event;
console.log('code:', code);
vm.weixinAppLogin(code, 'wechat');
},
fail: function (err) {
// 登录授权失败
// err.code是错误码
console.log('err:', err);
},
})
操作步骤:
- 调用微信app授权登录
预期结果:
- 可以正常拿到回调
实际结果:
- 没有正常的返回回调
bug描述:
HBuilder X升级到最新版之后(4.08),使用标准基座,微信app可以正常授权获取到code,使用打的自定义调试基座时(带原生插件)或者云打包,授权返回会多出一个页面,,点返回之后才能回到登录页面,这个时候不能获取到授权的回调。在3.99版本开发的时候是可以正常授权登录的。
更多关于uni-app 使用打的自定义调试基座(带原生插件)或云打包时,授权返回会多出一个页面,点返回后才能回到登录页面,此时无法获取授权回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html
私信一下我qq,需要再提供一些信息
更多关于uni-app 使用打的自定义调试基座(带原生插件)或云打包时,授权返回会多出一个页面,点返回后才能回到登录页面,此时无法获取授权回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,已经私信你QQ了,麻烦加一下
在使用 uni-app 开发应用时,如果遇到在使用自定义调试基座(带原生插件)或云打包时,授权返回多出一个页面,并且点击返回后才能回到登录页面,导致无法获取授权回调的情况,可以尝试以下解决方案:
1. 检查授权回调 URL
确保你的授权回调 URL 配置正确,并且在授权成功后能够正确地返回到指定的页面。通常,授权回调 URL 应该在授权成功后直接跳转到指定的页面,而不是多出一个中间页面。
2. 检查页面跳转逻辑
在授权成功后,检查页面跳转逻辑,确保没有多余的页面跳转或重定向。可以使用 uni.navigateTo
或 uni.redirectTo
来直接跳转到目标页面,而不是使用 uni.switchTab
或其他可能导致页面堆栈增加的 API。
3. 使用 uni.reLaunch
重置页面栈
如果你希望在授权成功后直接返回到登录页面,并且不希望保留之前的页面栈,可以使用 uni.reLaunch
来重置页面栈并跳转到登录页面。
uni.reLaunch({
url: '/pages/login/login'
});
4. 检查原生插件逻辑
如果你使用了原生插件,确保插件在授权成功后的回调逻辑中正确处理了页面跳转。原生插件不应该在授权成功后插入多余的页面。
5. 调试自定义基座
在自定义调试基座中,确保没有额外的逻辑或代码导致页面跳转异常。可以通过逐步调试的方式,检查每一步的页面跳转逻辑,找出问题所在。
6. 检查云打包配置
在云打包时,确保打包配置没有引入额外的逻辑或代码。可以尝试使用不同的打包配置,或者使用官方提供的标准打包配置进行测试。
7. 使用 uni.$on
和 uni.$emit
传递回调数据
如果授权回调数据在页面跳转过程中丢失,可以使用 uni.$on
和 uni.$emit
来传递回调数据,确保在目标页面中能够获取到授权回调数据。
// 在授权成功页面
uni.$emit('authCallback', { data: authData });
// 在登录页面
uni.$on('authCallback', function(data) {
console.log('授权回调数据:', data);
});
8. 检查 manifest.json
配置
确保 manifest.json
中的页面路由配置正确,没有多余的页面路由或重定向逻辑。
9. 使用 uni.getStorageSync
和 uni.setStorageSync
存储回调数据
如果页面跳转导致回调数据丢失,可以使用 uni.setStorageSync
在授权成功后存储回调数据,然后在登录页面中使用 uni.getStorageSync
获取回调数据。
// 在授权成功页面
uni.setStorageSync('authCallbackData', authData);
// 在登录页面
const authData = uni.getStorageSync('authCallbackData');