封装的api
import { awaitWrap } from "./util"/*** 封装微信原生api->promise** @class weixinModel*/class weixinModel {constructor() {}// 获取图片信息getImageInfo(src) {return new Promise((resolve, reject) => {wx.getImageInfo({src: src,success: (result) => {resolve(result)},fail: (err) => {reject(err)},complete: () => {}})})}// 微信登录获取codegetCode() {return awaitWrap(new Promise((resolve, reject) => {wx.login({timeout: 10000,success: (res) => {resolve(res.code)},fail: (err) => {reject(err)}})}))}// 用户授权登录getUserInfo() {return awaitWrap(new Promise((resolve, reject) => {wx.getUserInfo({lang: 'zh_CN',timeout: 10000,success: (data) => {console.log(data);resolve(data)},fail: (err) => {reject(false)}})}))}// 用户是否允许授权获取信息getSetting() {return awaitWrap(new Promise((resolve, reject) => {wx.getSetting({success: (data) => {if (data.authSetting['scope.userInfo']) {resolve(true)} else {reject(true)}}})}))}}let weixin = new weixinModel()export { weixinModel, weixin }
小程序授权
<button open-type="getUserInfo" bind:getuserinfo="onGotUserInfo" class="authorizedBtn bg_editPhone_btn">确认授权</button>
判断用户是否允许授权获取信息
let [setErr, setRes] = await weixin.getSetting()if (setErr) return wx.showToast({ title: '授权之后才能正常使用小程序', icon: 'none' });
获取code
let [codeErr, code] = await weixin.getCode()if (codeErr) return wx.showToast({ title: '获取code失败', icon: 'none' });
获取用户信息
let [userInfoErr, userInfo] = await weixin.getUserInfo()if (userInfoErr) return wx.showToast({ title: '获取授权用户信息失败', icon: 'none' });
通过code请求后台服务登录接口,获取token
- 通过token、用户信息,获取系统用户信息
获取手机号
async getPhoneNumber(e) {console.log(e);if (!e.detail.encryptedData) return wx.showToast({ title: '请授权绑定手机号', icon: 'none' });let [codeErr, code] = await weixin.getCode()if (codeErr) return wx.showToast({ title: '获取code失败', icon: 'none' });console.log(e.detail.errMsg)console.log(e.detail.iv)console.log(e.detail.encryptedData)console.log(code);// todo:请求后台服务获取用户手机号}
通过获取手机号信息和code请求后台服务获取用户手机号
