小程序通过用户授权获取手机号getPhoneNumber

小程序前段有个非常简洁的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

猜你喜欢

转载自blog.csdn.net/yangning_/article/details/109320193