乐趣区

关于前端:主题活动答题小程序如何获取手机号并且每个手机号仅限参加1次

背景

是这样的,我前段时间不是接了一个常识比赛在线答题的小程序的我的项目需要嘛。其中,有一项流动规定是这样的,信息录入:每位参赛者,需填写公司名称、姓名、手机号(微信受权验证形式,每人仅限加入 1 次)。接下来,咱们一起看看如何一步步实现。

查看文档

由此可知,是通过微信小程序的凋谢能力获取的。

获取手机号


获取微信用户绑定的手机号,需先调用 wx.login 接口。

因为须要用户被动触发能力发动获取手机号接口,所以该性能不禁 API 来调用,需用 button 组件的点击来触发。

留神:目前该接口针对非集体开发者,且实现了认证的小程序凋谢(不蕴含海内主体)。需谨慎应用,若用户举报较多或被发现在不必要场景下应用,微信有权永恒回收该小程序的该接口权限。

应用办法

须要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并批准之后,能够通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据,而后在第三方服务端联合 session_key 以及 app_id 进行解密获取手机号。

代码实现

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> 获取手机号 </button>

`getPhoneNumber (e) {

console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)

}`

敏感数据对应的云 ID,开明云开发的小程序才会返回,可通过云调用间接获取凋谢数据。

在小程序获取到 cloudID 之后发动调用获取:

`wx.cloud.callFunction({
name: ‘getPhoneNumberData’,
data: {

weRunData: wx.cloud.CloudID(cloudID), // 这个 CloudID 值到云函数端会被替换
obj: {shareInfo: wx.cloud.CloudID(cloudID), // 非顶层字段的 CloudID 不会被替换,会原样字符串展现
}

}
})`

获取失去的凋谢数据为以下 json 构造:

`{

"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
    "appid":"APPID",
    "timestamp": TIMESTAMP
}

}`

成果截图

总结

获取手机号的前置条件是小程序账号必须是企业主体认证类型的,不然的话不能调用哦。调用的话,是须要通过将 button 组件 open-type 的值设置为 getPhoneNumber,而后服务端获取凋谢数据,即可。

退出移动版