1. 程式人生 > >支付寶小程式開發練習-重構,在app.js獲取使用者資訊(二)

支付寶小程式開發練習-重構,在app.js獲取使用者資訊(二)

App({
  getUserInfo(){
    return new Promise((resovle,reject)=>{
      if(this.userInfo) resovle(this.userInfo);
      //呼叫使用者授權 api 獲取使用者資訊
      my.getAuthCode({
        success:(authcode) =>{
          console.info(authcode);
          
          my.getAuthUserInfo({
            scopes: ['auth_user'],
            success: (res) => {
              this.userInfo = res;
              resovle(this.userInfo);
            },
            fail:() =>{
              reject({});
            }
          });
        },
        fail:() =>{
          reject({});
        }
      });
    });
  },

  onLaunch(options) {
    // 第一次開啟
    // options.query == {number:1}
    console.info('App onLaunch');
  },
  onShow(options) {
    // 從後臺被 scheme 重新開啟
    // options.query == {number:1}
  },
});

Index.js 中通過 呼叫 app.js 中定義的 getUserInfo 獲取使用者資訊,這樣只要需要獲取使用者資訊的頁面都可以呼叫這個函式

const app = getApp();

Page({
  data: {
    src: ''
  },
  imageError: function (e) {
    console.log('image 發生錯誤', e.detail.errMsg)
  },
  imageLoad: function (e) {
    console.log('image 載入成功', e);
  },
  onLoad(query) {
    // 頁面載入
  },
  onReady() {
    // 頁面載入完成
    app.getUserInfo().then(
      user => this.setData({src: user.avatar})
    );
  },
  onShow() {
    // 頁面顯示
  },
  onHide() {
    // 頁面隱藏
  },
  onUnload() {
    // 頁面被關閉
  },
  onTitleClick() {
    // 標題被點選
  },
  onPullDownRefresh() {
    // 頁面被下拉
  },
  onReachBottom() {
    // 頁面被拉到底部
  },
  onShareAppMessage() {
    // 返回自定義分享資訊
    return {
      title: '校園碼',
      desc: '校園二維碼',
      path: 'pages/index/index',
    };
  },
});