加强安全保护,防止部分应用邀请新用户有奖励而产生的刷号行为,和后端配合,不从前端传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
|