1. 程式人生 > >微信小程式的開發之授權功能

微信小程式的開發之授權功能

最近剛好在做一個小程式的簡單開發,故準備將其中的一些要點記錄下,以備日後參考
相信最近在開發小程式的小夥伴們都清楚,官方將授權功能修改了(一句mmp不知道能不能引起共鳴~)。害我找了半天的原因….
老式授權功能:
var openId = (wx.getStorageSync('openId'));
    if (openId) {
      wx.getUserInfo({
        success: function (res) {
          wx.request({
            url: '',
            data: res,
            method: 'POST'
, success: function (res) { console.log('submit success'); // 判斷是否為渠道商 if (is) { app.editTabBar2(); } else { app.editTabBar(); } }, fail: function (res) { console.log('submit fail'
); }, complete: function (res) { console.log('submit complete'); } }) that.setData({ nickName: res.userInfo.nickName, avatarUrl: res.userInfo.avatarUrl, }) }, fail: function () { // fail
console.log("獲取失敗!") }, complete: function () { // complete console.log("獲取使用者資訊完成!") } }) } else { wx.login({ success: function (res) { console.log(res); if (res.code) { console.log(111); wx.getUserInfo({ withCredentials: true, success: function (res_user) { console.log(res_user); wx.request({ // 後臺介面地址 url: '', data: { code: res.code, encryptedData: res_user.encryptedData, iv: res_user.iv }, method: 'GET', header: { 'content-type': 'application/json' }, success: function (res) { // 判斷是否為渠道商 if (is) { app.editTabBar2(); } else { app.editTabBar(); } // this.globalData.userInfo = JSON.parse(res.data); that.setData({ nickName: res.data.nickName, avatarUrl: res.data.avatarUrl, }) wx.setStorageSync('openId', res.data.openId); } }) }, fail: function () { wx.showModal({ title: '警告通知', content: '您點選了拒絕授權,將無法正常顯示個人資訊,點選確定重新獲取授權。', success: function (res) { console.log(res); if (res.confirm) { wx.openSetting({ success: (res) => { console.log(res); // 如果使用者重新同意了授權登入 if (res.authSetting["scope.userInfo"]) { console.log(22) wx.login({ success: function (res_login) { if (res_login.code) { wx.getUserInfo({ withCredentials: true, success: function (res_user) { console.log(res_user) wx.request({ url: '', data: { code: res_login.code, encryptedData: res_user.encryptedData, iv: res_user.iv }, method: 'GET', header: { 'content-type': 'application/json' }, success: function (res) { // 判斷是否為渠道商 if (is) { app.editTabBar2(); } else { app.editTabBar(); } that.setData({ nickName: res.data.nickName, avatarUrl: res.data.avatarUrl, }) wx.setStorageSync('openId', res.data.openId); } }) } }) } } }); } }, fail: function (res) { wx.showModal({ title: '提示', content: '您點選了拒絕授權,將只能允許程式瀏覽功能', success: function (res) { if (res.confirm) { console.log('使用者點選確定') } } }) } }) } } }) }, complete: function (res) { } }) } } }) }
新式授權功能(美名曰:提升使用者的體驗,不過也確實如此哦~)
需要事件操作呼叫才能授權
wxml
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">獲取使用者資訊</button>

js

/**
   * 獲取使用者資訊
   */
  onGotUserInfo: function (e) {
    wx.setStorageSync("userInfo",e);
    console.log(e);
    console.log(e.detail)
    console.log(e.detail.errMsg)
    console.log(e.detail.userInfo)
    console.log(e.detail.rawData)
  },
程式碼確實簡潔太多了~~~