1 // pages/openauth/index.js 2 let App = getApp(); 3 Page({ 4 5 /** 6 * 頁面的初始數據 7 */ 8 data: { 9 showUserAuth: false //是否顯示彈框,默認不顯示。 10 }, 11 12 /** 13 * 生命週期函數--監聽頁面加載 14 */ 15 onLoad: function(options) { 16 //登陸小程序 17 this.WxLogin(); 18 }, 19 /** 登陸小程序*/ 20 WxLogin: function() { 21 let vm = this; 22 let wxLogin = App.WxLogin(); 23 wxLogin.then((res) => { 24 //是新用戶註冊 則 返回 openid 和 session_key 數據 25 if (res.is_reg) { 26 //緩存在客戶端 27 wx.setStorageSync('wxInfo', res); 28 //彈出受權框,讓用戶受權登陸 29 vm.setData({ 30 showUserAuth: true 31 }); 32 } else { 33 //不是新用戶註冊 則 返回 token 數據 34 const token = res.token_type + ' ' + res.access_token; 35 //緩存客戶端 36 wx.setStorageSync('access_token', token); 37 //跳轉至首頁(tabbar) 38 // App.GetLoacationOrGoHome(); 39 //檢查是否須要從新受權 40 wx.getSetting({ 41 success(res) { 42 if (res.authSetting["scope.userInfo"]) { 43 console.log("正在獲取老用戶最新的用戶信息"); 44 wx.getUserInfo({ 45 success: function(res) { 46 //緩存最新用戶信息 47 App.globalData.userInfoBool = true; //以獲取到地理位置 48 wx.setStorageSync('userInfo', res.userInfo); 49 console.log("正在緩存用戶信息,跳轉至 首頁....");//準備前往獲取地理位置 50 //跳轉至首頁(tabbar) 51 App.GetLoacationOrGoHome(); 52 } 53 }); 54 55 } else { 56 console.log("檢測到老用戶未受權(清除了受權數據),須要從新受權..."); 57 //須要從新受權 58 App.globalData.needReauth =true; 59 //打開受權彈窗 60 vm.setData({ 61 showUserAuth: true 62 }); 63 } 64 } 65 }) 66 67 } 68 }).catch((msg) => { 69 console.error('小程序登陸錯誤(login):' + msg); 70 }); 71 }, 72 /** 用戶點擊 受權登陸*/ 73 GetUserInfo: function(e) { 74 let vm = this; 75 //緩存 用戶信息數據 76 if (e.detail.errMsg =="getUserInfo:fail auth deny"){ 77 console.log("用戶拒絕受權用戶信息,再次嘗試讓用戶贊成!"); 78 wx.showModal({ 79 content: '你須要【受權登陸】並容許 motiva 獲取你的微信頭像、暱稱等信息,請點擊肯定繼續。', 80 success(res) { 81 if (!res.confirm) { 82 // vm.ChooseLocation() 83 } 84 } 85 }) 86 }else{ 87 console.log("已贊成受權,正在緩存用戶信息"); 88 App.globalData.userInfo = e.detail.userInfo; 89 wx.setStorageSync('userInfo', userInfo); 90 if (App.globalData.needReauth) {//老用戶 從新受權 91 console.log("老用戶就走到這裏,跳轉至 首頁....");//準備前往獲取地理位置 92 App.GetLoacationOrGoHome(); 93 return 94 } 95 console.log("新用戶開始註冊..."); 96 //格式化數據:取出緩存中 session_key 和 openid 與 用戶數據 97 let wxInfo = wx.getStorageSync('wxInfo'); 98 e.detail.openid = wxInfo.openid; 99 e.detail.session_key = wxInfo.session_key; 100 let info = JSON.stringify(e.detail); 101 //發送 保存數據庫的 請求 102 let userInfo = App.SaveUserInfo(info); 103 userInfo.then((res) => { 104 console.log("新用戶註冊成功"); 105 //請求成功 後返回 token 數據 106 const token = res.token_type + ' ' + res.access_token; 107 //緩存token 數據 108 wx.setStorageSync('access_token', token); 109 console.log("緩存用戶信息,跳轉至 首頁....");//準備前往獲取地理位置 110 //跳轉至首頁(tabbar) 111 App.GetLoacationOrGoHome(); 112 }).catch(msg => { 113 console.error("保存用戶數據失敗(registered):" + msg); 114 this.setData({ 115 showUserAuth: true 116 }); 117 }); 118 } 119 } 120 })
受權登陸頁面數據庫