背景是这样的,我不是接受了一个知识竞赛答题小程序的项目请求吗?过去。其中,有这样一条活动规则,信息录入:每位参与者必须填写公司名称、姓名、手机号(微信授权验证方式,每人只能参与一次)。接下来,让我们一步一步地看看如何做。查看文档可以看出是通过微信小程序的开放能力获取的。获取手机号获取微信用户绑定的手机号,需要先调用wx.login接口。因为需要用户主动触发接口获取手机号,所以这个函数不是API调用的,需要通过点击按钮组件来触发。注:目前该接口开放给已完成小程序认证的非个人开发者(不含境外实体)。应谨慎使用。如发现用户多次举报或被用于非必要场景,微信有权永久撤销小程序接口权限。使用方法需要将按钮组件的open-type的值设置为getPhoneNumber。用户点击同意后,可以通过bindgetphonenumber事件回调获取到微信服务器返回的加密数据,再结合第三方服务器上的session_key和app_id解密获取电话号码。代码实现获取电话号码`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值会传给cloudfunctionendReplaceobj:{shareInfo:wx.cloud.CloudID(cloudID),//非顶级字段的CloudID不会被替换,会显示为字符串}}})`得到的打开的数据是如下json结构:`{"phoneNumber":"13580006666","purePhoneNumber":"13580006666","countryCode":"86","watermark":{"appid":"APPID","timestamp":TIMESTAMP}}`获取电话号码效果截图前提是小程序账号必须是企业实体认证类型,否则无法调用。调用时,需要设置按钮组件的open-type值为getPhoneNumber,然后服务器端获取到open-data。