封装的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: () => {}
})
})
}
// 微信登录获取code
getCode() {
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请求后台服务获取用户手机号