mui APP 微信登录授权

一、在微信平台上申请appid、appsecret。

二、app --》 manifest.json--》SDK配置(填写申请好的appid和appsecret)

三、在登录页,点击微信登录按钮,若绑定微信,则免账号密码登录直接跳转到首页;若未绑定,则弹出未绑定微信。

// 微信授权登录对象
var aweixin=null;    // 调用plus.oauth.getServices获取保存
// 当前环境支持的所有授权登录对象
var auths = {};

mui.plusReady(function() {
    // 获取鉴权服务
    getService();
})

// 获取登录授权认证服务列表,单独保存微信登录授权对象
// 5+APP在plusready事件中调用,uni-app在vue页面的onLoad中调用
function getService(){
    plus.oauth.getServices(function(services){
        for(var i=0;i<services.length;i++){
            auths[services[i].id] = services[i];
        }
        aweixin = auths['weixin'];
    }, function(e){
        plus.nativeUI.alert("获取登录授权服务列表失败:"+JSON.stringify(e));
    } );
}

//wx登录                
document.getElementById('wxdenglu').addEventListener('tap',function(){
plus.nativeUI.showWaiting("正在登录中...",{padlock: true}); if(!aweixin.authResult){ authLogin().then(res=>{ wxLogin()//调用自定义的登录接口 }).catch(res=>{ plus.nativeUI.closeWaiting(); }) }else{ wxLogin()//调用自定义的登录接口 } });

四、用账号密码登进首页时,判断是否绑定微信,若为绑定微信,则提示让其绑定微信。

五、微信绑定和解绑。

// 微信授权登录对象
// 调用plus.oauth.getServices获取保存
var aweixin=null;    
// 当前环境支持的所有授权登录对象
var auths = {};

mui.plusReady(function(){
           // 获取鉴权服务
          getService()
});

//wx绑定
function weixinBind(){
    plus.nativeUI.showWaiting("正在绑定中...",{padlock: true});
    if(!aweixin.authResult){
        authorize().then(res=>{
            wxBind(1,aweixin.authResult.openid)
        }).catch(res=>{
            plus.nativeUI.closeWaiting();
        })
    }else{
        wxBind(1,aweixin.authResult.openid)
    }
};

//wx解绑
function weixinUnBind(){
    plus.nativeUI.showWaiting("正在解绑中...",{padlock: true});
    wxBind(2,"")
}

// 获取登录授权认证服务列表,单独保存微信登录授权对象
// 5+APP在plusready事件中调用,uni-app在vue页面的onLoad中调用
function getService(){
    plus.oauth.getServices(function(services){
        for(var i=0;i<services.length;i++){
            auths[services[i].id] = services[i];
        }
        aweixin = auths['weixin'];
    }, function(e){
        plus.nativeUI.alert("获取登录授权服务列表失败:"+JSON.stringify(e));
    } );
}

// 获取微信登录授权对象后可进行授权操作
function authorize(){
    return new Promise(function (resolve, reject) {
        if(!aweixin){
            plus.nativeUI.alert("当前环境不支持微信登录");
            return;
        }
        aweixin.authorize(function(e){
            // plus.nativeUI.alert("授权成功:"+JSON.stringify(e));
            authLogin().then(res=>{
                resolve(res);
            });
        }, function(e){
            // plus.nativeUI.alert("授权失败:"+JSON.stringify(e));
            plus.nativeUI.closeWaiting();
            reject(e);
        }, {scope:'snsapi_userinfo',state:'authorize test'});
    })
}

// 获取微信登录授权对象后可进行登录认证操作
function authLogin(){
    return new Promise(function (resolve, reject) {
        if(!aweixin){
            plus.nativeUI.alert("当前环境不支持微信登录");
            return;
        }
        if(!aweixin.authResult){
            aweixin.login(function(e){
                // plus.nativeUI.alert("登录认证成功!"+JSON.stringify(e));
                resolve(e);
            }, function(e){
                reject(e);
            } );
        }else{
            // plus.nativeUI.alert("已经登录认证!");
        }
    })
}
        

 

posted @ 2019-10-15 11:04  屎壳郎推代码  阅读(2412)  评论(0)    收藏  举报