0
头图

协议完善

我们在小程序开发过程中或多或少会使用带用户隐私API,比如获取用户头像、昵称,用户手机号等等,这些API必须完善用户隐私指引才能正常调用,否者正式版本使用会报错或者无法过审。

仅有在指引中声明所处理的用户信息,才可以调用平台提供的对应接口或组件。若未声明,对应接口或组件将直接禁用
完善的入口如下:


根据实际情况,勾选对应的选项,勾选完后进入界面完善对应隐私说明,这里提供了一个片段供参考:

下面是对应的权限说明以及对应的隐私API

1 为了【保障你正常编辑个人信息等服务】,开发者将在获取你的明示同意后,使用你的相册(仅写入)权限。
【wx.authorize({scope: 'scope.writePhotosAlbum'})、wx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum】
2 为了【保障你正常使用我们的服务,维护我们服务的正常运行,改进及优化我们的服务体验以及保障你的帐号安全】,开发者将在获取你的明示同意后,收集你的微信昵称、头像。
【<button open-type="chooseAvatar">、<input type="nickname">】
3 开发者收集你的发票信息,用于【维护消费功能】。
【wx.chooseInvoiceTitle、wx.chooseInvoice】
4 开发者收集你选中的照片或视频信息,用于【发表评论、分享视频】【用于分享和预览图片视频】。
【wx.chooseImage、wx.chooseMedia、wx.chooseVideo】
5 开发者使用你的通讯录(仅写入)权限,用于【获取保存平台客服热线】。
【wx.authorize({scope: 'scope.addPhoneContact'})、wx.addPhoneContact】
6 开发者收集你的订单信息,用于【方便获取订单信息】。
7 开发者收集你的操作日志,用于【运营维护】。
8 开发者使用你的日历(仅写入)权限,用于【用户日历日程提醒】。
【wx.authorize({scope: 'scope.addPhoneCalendar'})、wx.addPhoneRepeatCalendar、wx.addPhoneCalendar】
9 开发者获取你选择的位置信息,用于【线下导航服务】。
【wx.choosePoi、wx.chooseLocation】
10 开发者调用你的方向传感器,用于【为用户提供更为智能和便捷的服务】。
【wx.startDeviceMotionListening】
11 开发者调用你的方向传感器,用于【识别判断您的设备状态】。
【wx.startDeviceMotionListening】
12 开发者调用你的陀螺仪传感器,用于【识别判断您的设备状态】。
【wx.startGyroscope】
13 开发者调用你的加速传感器,用于【识别判断您的设备状态】。
【wx.startAccelerometer】
14 开发者收集你的邮箱,用于【在必要时和用户联系】。
15 为了【用户互动】,开发者将在获取你的明示同意后,收集你的车牌号。
【wx.chooseLicensePlate】
16 为了【上传图片或者视频】,开发者将在获取你的明示同意后,访问你的摄像头。
【wx.authorize({scope: 'scope.camera'})、wx.createVKSession、<camera>、<live-pusher>、<voip-room>】
17 为了【用户互动】,开发者将在获取你的明示同意后,收集你的微信运动步数。
【wx.authorize({scope: 'scope.werun'})、wx.getWeRunData】
18 为了【显示距离】,开发者将在获取你的明示同意后,收集你的位置信息。
【wx.authorize({scope:'scope.userLocation'})、wx.authorize({scope: 'scope.userLocationBackground'})、wx.authorize({scope: 'scope.userFuzzyLocation'})、wx.getLocation、wx.startLocationUpdate、wx.startLocationUpdateBackground、wx.getFuzzyLocation、MapContext.moveToLocation】
19 开发者收集你的设备信息,用于【保障你正常使用网络服务】。
20 开发者收集你的发布内容,用于【用户互动】。
21 开发者收集你的地址,用于【获取位置信息】。
【wx.chooseAddress】
22 为了【通过语音与其他用户交流互动】 或 【需要使用麦克风进行语音录制】,开发者将在获取你的明示同意后,访问你的麦克风。
【wx.authorize({scope: 'scope.record'})、wx.startRecord、RecorderManager.start、<live-pusher>、wx.joinVoIPChat】
23 为了【登录或者注册】,开发者将在获取你的明示同意后,收集你的手机号。
【<button open-type="getPhoneNumber">、<button open-type="getRealtimePhoneNumber">】
24 开发者收集你的身份证号码,用于【实名认证后才能继续使用的相关网络服务】。
25 开发者收集你的所关注账号,用于【用户互动】。
26 开发者访问你的蓝牙,用于【设备连接】。
【wx.authorize({scope: 'scope.bluetooth'})、wx.openBluetoothAdapter、wx.createBLEPeripheralServer】
27 开发者收集你选中的文件,用于【提前上传减少上传时间】。
【wx.chooseMessageFile】
28 开发者调用你的磁场传感器,用于【识别判断您的设备状态】。
【wx.startCompass】
29 开发者读取你的剪切板,用于【复制文本等相关信息】。
【wx.setClipboardData、wx.getClipboardData】




完善之后提交协议,等待微信审核即可。

隐私协议开发指南

涉及处理用户个人信息的小程序开发者,需通过弹窗等明显方式提示用户阅读隐私政策等收集使用规则
我们可以在弹出隐私协议前调用wx.getPrivacySetting判断用户是否授权隐私了,如果授权则无需弹窗也可调用隐私API,详情可查看文档:主动查询隐私授权同步状态以及展示隐私协议

本地调试步骤
1、微信开发者工具调试,点击手机小图标

应用设置里可以配置授权,但是貌似没什么用,我自己测试没效果,真机预览也一样

2、uniapp中配置或微信小程序配置
manifest.json文件

原生微信小程序在app.json里配置
 /* 小程序特有相关 */
 "mp-weixin" : {
 "appid" : "wx5b461fea4b8f5f5d",
 "__usePrivacyCheck__" : true, // 启用隐私API校验
 },

开启了"__usePrivacyCheck__" : true微信后台对应的隐私权限API必须申请通过,否则无法调用

根据目前的实践来看,无需在进入小程序的时候弹窗,因为这个弹窗只需要授权一次就可以了,所以我们只需要在小程序里正常发请求,如果token授权失败则跳登录页,在登录页里弹出授权弹窗,用户确定后才能进下一步,拒绝则弹窗二次提醒,依旧拒绝则退出小程序。确认授权后弹窗关闭,此时授权信息会缓存,后续都不会弹出了,弹窗关闭后点击一键登录正常登录即可,流程如下图所示:

需要注意,我们申请的用户隐私API只是针对API层面的,当你授权后,调用uni.chooseMedia这种API是可以直接通过的,但是当你需要硬件交互时,比如用户授权录音,这个是设备相关的,还是会弹出授权弹窗,如图:

该授权弹窗仅针对当前设备的功能做说明,而且是微信自带的弹窗,无需配置。
你可以在调用录音的位置做一个try...catch,如果拒绝,则走catch,此时会提示errMsg: authorize:fail auth deny,你根据提示信息判断是否提示用户'您已拒绝我们的隐私协议,部分功能将不可用'即可,另外,err.errno == 112则是隐私协议未更新API不可用。在所有涉及到隐私API的地方都应该做这种错误提示的兼容。

const errFeedback = (err) => {
 if (err.errno == 112) {
 return uni.showToast({
 title: '隐私协议未更新,部分功能将不可用',
 icon: 'none',
 duration: 1000
 });
 }
 if (err.errMsg.includes('authorize:fail')) {
 return uni.showToast({
 title: '您已拒绝我们的隐私协议,部分功能将不可用',
 icon: 'none',
 duration: 1000
 });
 }
}

手机号获取

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

获取手机号的功能只有企业账号才可以使用,在配置获取手机号的隐私协议后,需要等一段时间才会生效。

配置完之后,还需要完成微信认证,否则会提示:errMsg: "getPhoneNumber:fail no permission"



参考:获取用户手机号接口,提示:getPhoneNumber:fail no permission
手机号验证组件,免费使用1000次,之后每次0.03


参考文档:
用户隐私保护指引填写说明
小程序用户隐私保护指引内容介绍
wx.getPrivacySetting(Object object)
主动查询隐私授权同步状态以及展示隐私协议
Errno错误码
fail api scope is not declared in the privacy agreement


兔子先森
711 声望1.1k 粉丝

致力于新技术的推广与优秀技术的普及。


引用和评论

0 条评论
评论支持部分 Markdown 语法:**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用 @ 来通知其他用户。

AltStyle によって変換されたページ (->オリジナル) /