wx.onNeedPrivacyAuthorization((resolve, eventInfo) => {
// console.log('触发本次事件的接口是:' + eventInfo.referrer, eventInfo, resolve)
// 需要用户同意隐私授权时
// 弹出开发者自定义的隐私授权弹窗
this.setData({
_visable: true
})
this.resolvePrivacyAuthorization = resolve
});
bindAgreePrivacyAuthorization() {
// console.log('同意', this.resolvePrivacyAuthorization)
this.resolvePrivacyAuthorization({
buttonId: 'agree-btn',
event: 'agree'
})
this.setData({
_visable: false,
})
}
创建以上代码用于授权隐私,以下代码测试调用效果
wx.authorize({
scope: scope.userLocation,
// 授权成功的回调
success(res) {
console.log(res, 'success')
},
// 拒绝授权后的回调
fail(res) {
console.log(res, 'getSetting--fail')
if (res.errno == 104) {
// 隐私权限取消授权
// getSetting(scope, success, cancel)
if (res.errMsg == 'authorize:fail privacy permission is not authorized or buttonId is wrong') {
// 已经授权,但是不知道为毛buttonId is wrong,可能那边的回调有问题,所以再调用一下
} else {
// 确认不授权隐私
}
} else {
// 引导授权
}
},
})
预期确认授权以后,应该直接进入success回调,打印console.log(res, 'success')但是实际情况会触发fail,打印信息为authorize:fail privacy permission is not authorized or buttonId is wrong,监听是以组件形式引入界面。
使用button获取getPhoneNumber第一次同意授权也无法获取到号码,需要再次点击才能获取到信息
wxml贴一下
<view class="privacy" wx:if="{{_visable}}">
<view class="weui-mask" style="z-index:10000"></view>
<view class="weui-dialog" style="z-index:50000">
<view class="weui-dialog__hd fw-b">隐私保护指引</view>
<view class="weui-dialog__bd">
<view class="ta-l fs-09 mt-10">在使用本服务之前,请仔细阅读<text class="co-black" bind:tap="bindOpenPrivacyContract" data-type=''> {{_privacyContractName}}</text>。如您同意本指引,请点击“同意”开始使用</view>
</view>
<view class="weui-dialog__ft">
<a bindtap="bindCloseDialog" role="button" href="javascript:" class="weui-dialog__btn weui-dialog__btn_default"><Button>取消</Button></a>
<a role="button" href="javascript:" class="weui-dialog__btn">
<button id="agree-btn" open-type="agreePrivacyAuthorization" bind:tap="bindAgreePrivacyAuthorization">同意</button>
</a>
</view>
</view>
</view>
1,检查一下你的小程序隐私政策,有没有声明这个权限。
2,另外加一个button,点击之后先进行隐私政策弹窗授权,再显示手机号的button,分两步操作。参考如下代码的思路,showPrivacyPopup方法是弹窗进行隐私政策授权,需要自行开发一下。
<button bind:tap="showPrivacyPopup" type="primary" wx:if="{{isNeedAuthorization===true}}">阅读并同意隐私保护指引</button> <button type="primary" open-type="getPhoneNumber" bindgetphonenumber="authPhoneNumber" wx:else>授权绑定手机号</button>
但是第一次同意授权没有按照预期的success中,第二次触发就不需要授权能正常获取到数据了,因为实际上第一次已经成功了,但是走到了fail的回调中不符合预期