1.第一次作第三方微信登錄,因此在這方面話太多時間了,主要是在獲取code的時候感受頭痛,uni-app沒有說明如何獲取code,後來在網上搜索諸多信息後終於解決了問題html
uni-app在app端第三方微信登錄時要獲取code再傳給後端,後端根據code向微信發送登錄請求:html5
// #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