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