微信小程序接入隐私协议
前言
在 2023年9月15日之后,微信小程序默认启用隐私相关功能,如果没有隐私协议的申请审核,那么你将没有权限调用微信的 API 获取用户信息。如果你想要通过其他手段进行用户隐私的收集,小程序版本功能将审核不通过,就算通过某种技术手段绕过了审核,也很容易被举报下架。
官方文档说明:
2023.08.22更新:
以下指南中涉及的 getPrivacySetting、onNeedPrivacyAuthorization、requirePrivacyAuthorize 等接口目前可以正常接入调试。调试说明:
在 2023年9月15日之前,在 app.json 中配置
__usePrivacyCheck__: true
后,会启用隐私相关功能,如果不配置或者配置为 false 则不会启用。在 2023年9月15日之后,不论 app.json 中是否有配置
__usePrivacyCheck__
,隐私相关功能都会启用。
配置隐私协议
开发者需在「小程序管理后台」配置《小程序用户隐私保护指引》,详细指引可见:用户隐私保护指引填写说明。
按需选择你想要使用的用户信息类型,并填写申请使用理由
选择不全可能导致任然无权无法使用部分微信 API,例如:我选择了
照片或视频信息
,一直无法调用wx.chooseMedia
接口更新用户头像,后来补充了摄像头
以及麦克风
等权限后才成功每次修改都会触发一次审核,大概 1 小时到几小时不等
审核完成会微信通知到用户
关于隐私申请的理由,可以参考我的个人微信小程序,打开小程序,点击「个人中心」的《隐私协议》。
用户授权隐私协议
用户授权隐私协议的方式大致可以分为两种:
方案一:在首页或者某个独立页面,弹出授权隐私框,让用户进行选择
方案二:与微信提供的组件耦合使用,例如:input、button 等
这里比较建议使用方案二,对于用户来说,体验上会比较好。同时使用官方默认的样式,也可以自定义,看个人需求。
以上就是使用 input 框和隐私进行耦合,在没有进行隐私授权之前,无法获取到用户的昵称。具体可以到Eric技术圈
小程序中体验。
隐私协议授权实现
TypeScript (或 JavaScript ) 文件:
Page({
data: {
focus: false,
newNickname: '',
},
handleAgreePrivacy() {
if (wx.requirePrivacyAuthorize) {
wx.requirePrivacyAuthorize({
success: () => {
console.log('用户同意了隐私协议 或 无需用户同意隐私协议');
// 用户同意隐私协议后给昵称input聚焦
this.setData({
focus: true
})
},
fail: () => {
console.log('用户拒绝了隐私协议')
}
})
} else {
this.setData({
focus: true
})
}
},
});
WXML 文件:
<view class="nickname-wrapper" catch:touchstart="handleAgreePrivacy">
<text class="nickname-label">昵称</text>
<input type="nickname" focus="{{focus}}" model:value="{{newNickname}}" class="nickname-input" placeholder="请输入昵称" />
</view>
以上是如何获取用户昵称的例子,同理可以用于选择用户照片、用户手机号,如果用户同意了隐私协议,那么其他地方就不会触发二次弹框,可以直接使用。
清空授权数据
用户可以从「微信下拉-最近-最近使用的小程序」中删除小程序,将清空历史同步状态。下次访问小程序后,需要重新同步微信当前用户已阅读并同意小程序的隐私政策等收集使用规则。
开发者可通过此方式进行调试,也可以在开发者工具中「清除模拟器缓存-清除授权数据」清空历史同步状态。
小结
所以涉及到微信小程序用户隐私相关数据,出现下面三种任意一个一种情况,你都无法正常完成用户数据的收集:
没有申请审核通过用户隐私保护指引
小程序端没有让用户进行授权
申请的权限不够
个人微信小程序无法收集用户手机号
同时隐私协议的接入影响小程序的审核,当你不想收集用户数据时,在审核的时候记得选择未收集用户隐私选项,删除你的保存用户信息的页面。如果代码中有页面通过接口进行用户隐私数据的收集和保存,审核人员会通过app.json
中的页面路径直接访问你的个人用户界面,存有这样的侥幸心理是会审核不过的。
参考
欢迎关注我的公众号“Eric技术圈”,原创技术文章第一时间推送。