openauth.js

  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 })

受權登陸頁面數據庫

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息