authorize-comp.js 2.81 KB
let app = getApp();
Component({
  properties: {
    // 这里定义了innerText属性,属性值可以在组件使用时指定
    innerText: {
      type: String,
      value: 'default value',
    },
    // 用户拒绝授权后是否后退页面
    cancelBack: {
      type: Boolean,
      value: false,
    },
    // 用户拒绝授权后描述
    cancelDesc: {
      type: String,
      value: "同意授权才能获得更多体验哦~",
    }
  },
  data: {
    // 这里是一些组件内部数据
    someData: {}
  },
  methods: {
    // 这里是一个自定义方法
    customMethod() {
      this.triggerEvent('evtcomp', {
        name: "_evt_custom"
      })
    },
    // 隐藏蒙层
    hideMask() {
      this.triggerEvent('evtcomp', {
        name: "_evt_hide_mask"
      });
    },

    // 授权成功事件
    authComplete() {
      this.triggerEvent('evtcomp', {
        name: "_evt_auth_complete"
      });


    },

    // 点击暂不授权按钮
    cancelAuth(e) {
      this.hideMask();
      // this.triggerEvent('evtcomp', {
      //   name: "_evt_auth_cancel"
      // });
      // if (this.properties.cancelBack) {
      //   wx.navigateBack({
      //     delta: 1
      //   });
      // }
    },

    // 点击确认授权按钮
    bindGetUserInfo(e) {
      wx.showLoading();
      this.getUserInfo(e.detail);
    },

    // 授权操作
    getUserInfo(e) {
      let _this = this;
      if (e.encryptedData && e.iv) {
        // 同意授权
        app.post({
          url: app.api.register,
          sid: false,
          data: {
            encryptedData: e.encryptedData,
            iv: e.iv,
            code: app.store.getItem("wxcode"),
            tlMemberCode: app.globalData.tlMemberCode
          }
        }).then((res2) => {
          wx.hideLoading();
          if (res2 && res2.sessionId) {
            app.store.setItem('sessionId', res2.sessionId);
          }
          _this.hideMask();
          _this.authComplete();
          _this.initPage();
        }).catch((err) => {})
      } else {
        // 取消授权
        if (_this.properties.cancelBack) {
          wx.navigateBack({
            delta: 1
          });
        } else {
          if (_this.properties.cancelDesc) {
            wx.showToast({
              title: _this.properties.cancelDesc,
              icon: "none"
            })
          }
        }
      }
    },

    /**
     * 尝试重拉信息
     */
    initPage() {
      let pages = getCurrentPages();
      let view = pages[pages.length - 1];
      console.log("@authorize-comp view:", view);
      if (view) {
        try {
          view.hideMask();
          console.log("@authorize-comp || hideMask");
        } catch (error) {}
        try {
          view.initData();
          console.log("@authorize-comp || initData");
        } catch (error) {}
      }
    }
  }
})