WeChat applet----encapsulation to obtain openid and authorization to obtain mobile phone number

WeChat applet----encapsulation to obtain openid and authorization to obtain mobile phone number

1. Encapsulate the user to obtain openid and obtain WeChat mobile phone number (login.js)

import {
    
    
  member_get_openid, //获取openid接口 (接口封装可以看之前的文章)
  member_get_phone,//获取手机号接口
} from './post';

/**
 * 获取微信openid wx.login
 */
function wxLogin() {
    
    
  return new Promise((resolve, reject) => {
    
    
    wx.login({
    
    
      success(res) {
    
    
        if (res.code) {
    
    
          resolve(res.code)
        } else {
    
    
          reject(res.errMsg);
        }
      }
    })
  });
}

/**
 * 小程序获取openid  member_get_openid()
 */
function bindGetUserInfo() {
    
    
  let openid = wx.getStorageSync('openid');
  if (!openid || openid == undefined) {
    
    
    wxLogin().then(async code => {
    
    
      let datas = await member_get_openid(code);
      wx.setStorageSync('openid', datas.data.openid);
    })
  }
}

/**
 *  检查用户是否填写相关信息
 */
function checkLogin() {
    
    
  let user_id = wx.getStorageSync('user_id');
  if (!user_id) {
    
    
    wx.navigateTo({
    
    
      url: '/pages/mine/information',
    })
    return false
  } else {
    
    
    return true
  }
}

/**
 *  获取用户手机号  code:code值
 */
function getPhoneNumber(code) {
    
    
  return new Promise(function (resolve, reject) {
    
    
     wx.checkSession({
    
    
      success:async (res) => {
    
    
       let datas = await member_get_phone(code);
       let phone = datas.data.phone_info.phoneNumber;
       console.log('xxxxxx',datas)
        wx.setStorageSync('mobile', phone)
        resolve(phone);
      },
      fail: async (err) => {
    
    
        code = await wxLogin();
        reject(err);
      }
    })
  })
}

module.exports = {
    
    
  checkLogin,
  bindGetUserInfo,
  getPhoneNumber,
}

2. call

*** It can be set so that the user can get the openid as soon as the user enters the page, so call the openid in app.js and check whether the user fills in the relevant information (or not) ***

App({
    
    
  onLaunch() {
    
    
    Login.bindGetUserInfo(); // 获取openid接口
  },
  /**
   *  检查用户是否填写相关信息
   */
  checkLogin() {
    
    
    Login.checkLogin();
  },
})

Call to get the phone number:

wxml:

 <button class="getcode" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>

js:

	import Login from "../../utils/loginZ";
	
  async getPhoneNumber(e) {
    
    
    let code = e.detail.code;
    let phone = Login.getPhoneNumber(code);
    this.setData({
    
    
      ['numberInfos.phone']: phone
    })
  },

insert image description here

Guess you like

Origin blog.csdn.net/heavenz19/article/details/128115551