分享

uni-app关于小程序及app端第三方微信登陆问题(app端如何取得code值)

 印度阿三17 2020-01-15

加强安全保护,防止部分应用邀请新用户有奖励而产生的刷号行为,和后端配合,不从前端传openid,取得相应的code值给后端,后端再去拿到openid获取用户信息。
1.第三方微信登陆,主要是在获取code的时候感觉头痛,uni-app没有说明如何获取code,后来在网上搜索诸多信息后终于解决了问题

uni-app在app端第三方微信登陆时要获取code再传给后端,后端根据code向微信发送登陆请求:

复制代码
// #ifdef APP-PLUS
login() {
var it=this;
var getAppid = plus.runtime.appid;
console.log(‘app端登陆’)
uni.login({
provider: ‘weixin’,
success: function (loginRes) {
console.log(JSON.stringify(loginRes.authResult));
uni.showModal({
content: JSON.stringify(loginRes.authResult),
cancelText: “我再想想”,
cancelColor: “#999”,
confirmText: “转让”,
confirmColor: “#DEC17C”,
success: function(res) {

                }
            })
          }
        });
        var weixinService = null;
        // http://www./doc/zh_cn/oauth.html#plus.oauth.getServices
        plus.oauth.getServices(function(services) {
            console.log(312589340656548)
            console.log(services)
            if (services && services.length) {
                for (var i = 0, len = services.length; i < len; i  ) {
                    if (services[i].id === 'weixin') {
                        weixinService = services[i];
                        console.log('授权对象')
                        console.log(weixinService)
                        break;
                    }
                }
                if (!weixinService) {
                    console.log('没有微信登录授权服务');
                    return;
                }
                // http://www./doc/zh_cn/oauth.html#plus.oauth.AuthService.authorize
                weixinService.authorize(function(event) {  //此处获取code的关键
                    console.log(event)
                    console.log(event.code,'这次是真的授权后返回的code')
                    it.weixinCode = event.code; //用户换取 access_token 的 code
                    // it.requestLogin();
                    let data={code: it.weixinCode};
                    it.$api.user.login.getWeiXinCode(data).then(function(userInfo) {
                        console.log('是否走到这里')
                            console.log('第三方登录授权',it.weixinCode)
                            console.log('第三方登录授权1111',userInfo)
                            it.$store.commit('isLogged', true);
                            it.$store.commit('user', {});
                            it.$store.commit('user', userInfo.data);
                            uni.navigateBack()
                        }).catch(res => {
                        console.log(res)        
                            });
                    
                }, function(error) {
                    console.error('authorize fail:'   JSON.stringify(error));
                }, {
                    // http://www./doc/zh_cn/oauth.html#plus.oauth.AuthOptions
                    appid: getAppid, //开放平台的应用标识。暂时填个假的充数,仅做演示。
                });
            } else {
                console.log('无可用的登录授权服务');
            }
        }, function(error) {
            console.error('getServices fail:'   JSON.stringify(error));
        });
    },
    // #endif

复制代码
2. 微信小程序登陆方式 :

复制代码
// #ifdef MP-WEIXIN
getUserInfo(v) {
let vm = this;
uni.login({
provider: ‘weixin’,
success: function(loginRes) {
uni.getUserInfo({
success: function(res) {
vm.KaTeX parse error: Expected '}', got 'EOF' at end of input: … vm.store.commit(‘isLogged’, true);
vm.store.commit(′user′,);vm.store.commit('user', {}); vm.store.commit(′user′,);vm.store.commit(‘user’, userInfo.data);
uni.navigateBack()
}).catch(res => {
});
},
fail: function(res) {
vm.$store.commit(‘isLogged’, false);
}
});
},
fail: function(res) {
}
});
}
// #endif

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多