微信小程序----封装获取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
    })
  },

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值