uni-app Html5+微信登录时弹窗出现会授权两次bug
uni-app Html5+微信登录时弹窗出现会授权两次bug
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| HBuilderX | 3.1.14 |
示例代码:
var aweixin=null;
var _this=this
plus.oauth.getServices(function(services){
services.forEach((item)=>{
if(item.id=='weixin'){
aweixin = item;
console.log(aweixin)
}
})
if(!aweixin){//没有取得微信登陆的服务
uni.showToast({
title:'当前环境不支持微信登录',
icon:'none'
})
return;
}
if(!aweixin.authResult){//是否登录认证过
aweixin.authorize((e)=>{//在这块,只要授权弹窗出现,需要用户同意两次,才可以继续进行下面的流程
aweixin.login((e)=>{
//自定义的业务逻辑
})
})
}
})
操作步骤:
var aweixin=null;
var _this=this
plus.oauth.getServices(function(services){
services.forEach((item)=>{
if(item.id=='weixin'){
aweixin = item;
console.log(aweixin)
}
})
if(!aweixin){//没有取得微信登陆的服务
uni.showToast({
title:'当前环境不支持微信登录',
icon:'none'
})
return;
}
if(!aweixin.authResult){//是否登录认证过
aweixin.authorize((e)=>{//在这块,只要授权弹窗出现,需要用户同意两次,才可以继续进行下面的流程
aweixin.login((e)=>{
//自定义的业务逻辑
})
})
}
})
更多关于uni-app Html5+微信登录时弹窗出现会授权两次bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app Html5+微信登录时弹窗出现会授权两次bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的授权流程重复调用问题。在H5+环境下,微信登录的authorize方法会触发两次授权弹窗,这是因为H5+的授权机制与微信SDK的授权流程存在重叠。
问题的核心在于:authorize方法本身已经包含了完整的授权流程,无需再调用login方法。正确的做法是:
aweixin.authorize((e)=>{
if(e.authResult){
// 这里直接获取用户信息或执行后续业务逻辑
// 不需要再调用aweixin.login()
console.log('授权成功', e);
// 执行你的业务代码
}else{
console.log('授权失败');
}
});
或者,如果你只需要获取登录凭证,可以直接使用login方法:
aweixin.login((e)=>{
if(e.code){
// 获取到code,可以发送到后端换取openid和session_key
console.log('登录成功', e.code);
// 执行你的业务代码
}
});

