微信小程序----封装获取openid以及授权获取手机号

微信小程序----封装获取openid以及授权获取手机号

1.封装用户获取openid以及获取微信手机号(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.调用

*** 可以设置为用户一进页面就可以获取openid,所以在app.js中调用获取openid以及可以检查用户是否填写相关信息(也可以不用)***

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

调用获取手机号:

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/heavenz19/article/details/128115551