小程序前段有个非常简洁的api,通过小程序内部封装,只要通过一个类型 调取他们的api方法,便可直接拉起授权。
说到这我刹一脚,微信历来是非常注重用户体验的,无论任何事件,必须由用户自己来触发。这是值得点赞的。
接下来和大家聊聊,获取用户手机号码的api
getPhoneNumber
官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
大致实现思路:
上代码:
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
只要在你的view里将此button放上,便可拉起授权。
分析:
open-type=“getPhoneNumber” 这个是不能变得 这个便是官方给出的api,这个是核心,调起api的代码。
那有人问这个是干嘛的 bindgetphonenumber=“getPhoneNumber”。
此api是调起授权框之后用户操作的回调 用户点击了拒绝还是接受,由此方法接收通知。
bindgetphonenumber:官方指定点击事件。不可更改
至于getPhoneNumber 是可以变的 因为这个是你的方法。
下面看代码
getPhoneNumber:function (e) {
var that = this;
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { //用户点击拒绝
wx.showToast({
title: '请绑定手机号',
duration: 5000,
icon: 'none',
});
} else {
}
getPhoneNumber:fail user deny 拒绝与否,这个是依据
切记 我看很多博客上写着 getPhoneNumber:user deny 缺少了fail 后来看跟代码才发现。
那么知道了用户拒绝 如果用户点击接受授权呢
莫方:看代码
getPhoneNumber:function (e) {
var that = this;
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { //用户点击拒绝
wx.showToast({
title: '请绑定手机号',
duration: 5000,
icon: 'none',
});
} else {
//用户点击接受
var userId = getApp().globalData.userId;
var iv = e.detail.iv;
var encryptedData = e.detail.encryptedData;
var url = 'xxx-service/user/bindMobile';
var data = {
userId: userId,
encryptedData: encryptedData,
iv: iv,
}
req.post(url, data, function (res) {
if (res.completeCode == 1) {
wx.setStorageSync("mobile", res.data);
}
})
}
看到这 各位小伙伴可以看下上面的流程图便可明了:
e.detail.iv
e.detail.encryptedData
两个必传 传到后台 换取mobile