uni-app 微信登录授权窗口需授权两次才能正常业务逻辑

uni-app 微信登录授权窗口需授权两次才能正常业务逻辑

开发环境 版本号 项目创建方式
HBuilderX 3.1.8 云端

产品分类:HTML5+

手机系统:Android

手机系统版本号:Android 10

手机厂商:华为

手机机型:BLA-AL00


示例代码:

var aweixin=null;  
var _this=this  
plus.oauth.getServices(function(services){  
    console.log(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)=>{ //为什么授权两次   
        console.log(e)  
        aweixin.login((e)=>{  
                   业务逻辑....  
                }  
      }  
}  
`

更多关于uni-app 微信登录授权窗口需授权两次才能正常业务逻辑的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 微信登录授权窗口需授权两次才能正常业务逻辑的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的微信授权流程问题。根据你的代码,问题可能出现在以下方面:

  1. 授权状态判断不准确aweixin.authResult 可能在某些情况下未能正确反映实际的授权状态,导致重复触发授权流程。

  2. 授权时序问题:建议在 authorize 回调中先检查授权结果,再进行登录操作:

aweixin.authorize((authResult) => {
    if(authResult && authResult.code) {
        aweixin.login((loginResult) => {
            // 业务逻辑
        }, (error) => {
            console.error('登录失败:', error);
        });
    }
}, (error) => {
    console.error('授权失败:', error);
});
  1. 缓存问题:华为设备可能存在缓存机制,建议在授权前先清理微信的授权状态:
// 在授权前先登出清理状态
aweixin.logout();
  1. 权限配置检查:确保在 manifest.json 中正确配置了微信登录所需的权限和 appid。

  2. 使用 uni.login 替代:建议直接使用 uni-app 官方提供的 uni.login 方法,它内部已经处理了授权流程:

uni.login({
    provider: 'weixin',
    success: function(loginRes) {
        // 获取授权码
        console.log(loginRes.authResult);
    }
});
回到顶部