前言
最近在写小程序项目,有个获取手机号功能,网上荡了一下,虽不说是代码问题,有些文章都是残缺不全的,说到容易错误的区域又并未使用代码避免,说而不做的问题,索性自己结合网上的文章及官网文档写了一套完整的代码,完全开箱即用 🏄🏻♂️🏮🎹🐸
效果
代码
//Page Object
Page({
data: {},
getPhoneNumber: function(e) {
let that = this;
console.log('e', e);
//-----------------是否授权,授权通过进入主页面,授权拒绝则停留在登录界面
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
//用户点击拒绝
wx.showModal({
content: '请输入手机号',
showCancel: false,
success(res) {
if (res.confirm) {
// your code ...
}
},
});
} else {
let phoneQuery = {
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
// other params...
openid: wx.getStorageSync('openid'),
};
// 检查是session_key否过期
wx.checkSession({
success() {
//session_key 未过期,并且在本生命周期一直有效
console.log('session_key 未过期,并且在本生命周期一直有效');
wx.request({
url: 'https://xxx.com/api/v1/xx',
method: 'POST',
data: phoneQuery,
success: function(res) {
// your code...
},
fail: function(err) {
// your code...
},
});
},
fail() {
that.myLogin();
// session_key 已经失效,需要重新执行登录流程
},
});
}
},
// login
myLogin() {
wx.login({
success: res => {
//用code传给服务器调换session_key
let query = {
code: res.code,
};
// my_login为wx.request({})封装
my_login(query).then(res => {
// other code...
wx.setStorageSync('unionid', unionid);
});
},
});
},
//options(Object)
onLoad: function(options) {},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {},
onPageScroll: function() {},
//item(index,pagePath,text)
onTabItemTap: function(item) {},
});