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.html5plus.org/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.html5plus.org/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.html5plus.org/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.$api.user.login.weChatAppletLogin(loginRes.code,res.encryptedData,res.iv)
.then(function(userInfo) {
vm.$store.commit('isLogged', true);
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
標簽:
uni-app日常總結

