小程序隐私协议开发指南——接入流程
发表时间:2023-11-30 20:06:37
文章来源:炫佑科技
浏览次数:150
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
小程序隐私协议开发指南——接入流程
处理用户个人信息的小程序开发必须采用弹窗等明显方式提醒用户阅读隐私政策和其他收集、使用规则。
为规范开发对用户个人信息的处理,保护用户的合法权益,微信要求开发主动同步微信当前用户,阅读并同意小程序的隐私政策及其他收集和使用规则后方可使用。可以调用微信提供的隐私接口。
注意:
以下指南中提到的 、 、 ize 等接口仍处于 Beta 调试阶段,目前无法返回预期的正确结果。 目前开发可以阅读该指南文档和接口文档进行理解。 平台将尽快正式推出这些接口和调试方法。 上线后,将在本指导文件及相关公告中进行说明。
2023年8月22日更新:
以下指南中提到的 、 、ize 等接口目前可以正常访问调试。 调试说明:
2023年9月15日之前,在app.json中配置:true后,将启用隐私相关功能。 如果未配置或配置为 false,则不会启用它们。
2023 年 9 月 15 日之后,无论是否在 app.json 中配置,隐私相关功能都将启用。
接口使用请参考以下
2023年9月14日更新:
隐私相关功能的激活时间已延长至2023年10月17日。2023年10月17日之前,在app.json中配置:true后,将启用隐私相关功能。 如果未配置或配置为 false,则不会启用它们。 2023 年 10 月 17 日之后,无论是否在 app.json 中配置,隐私相关功能都将启用。
新增官方隐私授权弹窗功能,相关功能请参考下文。
二、接入流程 1、配置《小程序用户隐私保护指引》
开发需要在“小程序管理后台”配置“小程序用户隐私保护指引”。 详细指引请参见:《用户隐私保护指引》填写说明。
需要说明的是,只有在指南中声明了处理的用户信息,才能调用平台提供的相应接口或组件。 如果不声明,相应的接口或组件将直接被禁用。 隐私接口与相应处理信息的关系可以参见:小程序用户隐私保护指引介绍。
配置完成后,对于每个使用小程序用户,开发在调用声明的接口或组件之前,需要同步当前微信用户已阅读并同意小程序的隐私政策等收集使用规则。 同步开发方法见下文。
对于已经同步的用户,如果开发后续更新配置,则不需要重新同步旧版本中已经存在的接口或组件; 更新后产生的新接口或组件需要重新同步。 例如,7月11日更新的版本包含“收集您选择的位置信息”,7月12日同步了用户同意状态,7月13日更新的版本添加了“收集您的微信锻炼步数”,然后在没有再次同步,wx。 接口可以调用,但是wx. 接口无法调用。
2.主动查询隐私授权同步状态并显示隐私协议
从基础库2.32.3开始支持
开发可以使用wx. 查询微信记录的用户是否有需要同意的隐私政策信息的接口。 此信息可通过返回结果 res 中的字段获得。
与此同时,wx. 接口会返回开发在小程序管理后台配置的《小程序用户隐私保护指引》的名称信息。 开发可以调用wx. 打开页面的界面。
如果存在需要用户同意的隐私政策信息,开发需要主动提示用户阅读隐私政策以及其他收集和使用规则。 小程序开发可以自行设计提示方式,需要在相关界面中使用组件。 当用户点击添加组件后,即表示用户已阅读并同意小程序的隐私政策及其他收集和使用规则。 微信会收到同步信息。 此时开发可以在组件的事件回调之后调用声明的隐私接口。
代码示例
<view wx:if="{{showPrivacy}}">
<view>隐私弹窗内容....view>
<button bindtap="handleOpenPrivacyContract">查看隐私协议button>
<button id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意button>
view>
// page.js
Page({
data: {
showPrivacy: false
},
onLoad() {
wx.getPrivacySetting({
success: res => {
console.log(res) // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
if (res.needAuthorization) {
// 需要弹出隐私协议
this.setData({
showPrivacy: true
})
} else {
// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私接口
// wx.getUserProfile()
// wx.chooseMedia()
// wx.getClipboardData()
// wx.startRecord()
}
},
fail: () => {},
complete: () => {}
})
},
handleAgreePrivacyAuthorization() {
// 用户同意隐私协议事件回调
// 用户点击了同意,之后所有已声明过的隐私接口和组件都可以调用了
// wx.getUserProfile()
// wx.chooseMedia()
// wx.getClipboardData()
// wx.startRecord()
},
handleOpenPrivacyContract() {
// 打开隐私协议页面
wx.openPrivacyContract({
success: () => {}, // 打开成功
fail: () => {}, // 打开失败
complete: () => {}
})
}
})
从基础库2.32.3版本开始,隐私同意按钮支持与手机号码快速验证组件、手机号码实时验证组件耦合。 调用方法是or。
它还支持隐私同意按钮和用户信息获取组件。 调用方法是
示例代码
<button id="agree-btn1" open-type="getPhoneNumber|agreePrivacyAuthorization" bindgetphonenumber="handleGetPhoneNumber" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意隐私协议并授权手机号button>
<button id="agree-btn2" open-type="getRealtimePhoneNumber|agreePrivacyAuthorization" bindgetrealtimephonenumber="handleGetRealtimePhoneNumber" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意隐私协议并授权手机号button>
<button id="agree-btn3" open-type="getUserInfo|agreePrivacyAuthorization" bindgetuserinfo="handleGetUserInfo" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意隐私协议并获取头像昵称信息button>
// page.js
Page({
handleAgreePrivacyAuthorization() {
// 用户同意隐私协议事件回调
// 用户点击了同意,之后所有已声明过的隐私接口和组件都可以调用了
// wx.getUserProfile()
// wx.chooseMedia()
// wx.getClipboardData()
// wx.startRecord()
},
handleGetPhoneNumber(e) {
// 获取手机号成功
console.log(e)
},
handleGetRealtimePhoneNumber(e) {
// 获取实时手机号成功
console.log(e)
},
handleGetUserInfo(e) {
// 获取头像昵称成功
console.log(e)
}
})
3. 隐私接口被动监控需要用户授权事件
从基础库2.32.3开始支持
小程序开发除了能够自行判断时机提示用户阅读隐私政策等收集使用规则外,还可以使用wx. 当需要提示用户阅读隐私政策时进行监控的界面。 当用户触发微信端未记录同意的隐私接口调用时,会触发该事件。 开发可以在该事件触发时提示用户阅读隐私政策。
需要注意的是,对于组件来说,由于其特殊性,如果用户不同意隐私协议,则聚焦时不会触发该事件,而是会降级。
另外,微信还提供了wx.ize接口,可以用来模拟隐私接口调用。
代码示例
// page.wxml
<view wx:if="{{showPrivacy}}">
<view>隐私弹窗内容....view>
<button id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意button>
view>
// page.js
Page({
data: {
showPrivacy: false
},
onLoad() {
wx.onNeedPrivacyAuthorization((resolve, eventInfo) => {
console.log('触发本次事件的接口是:' + eventInfo.referrer)
// 需要用户同意隐私授权时
// 弹出开发者自定义的隐私授权弹窗
this.setData({
showPrivacy: true
})
this.resolvePrivacyAuthorization = resolve
})
wx.getUserProfile({
success: console.log,
fail: console.error
})
},
handleAgreePrivacyAuthorization() {
// 用户点击同意按钮后
this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' })
// 用户点击同意后,开发者调用 resolve({ buttonId: 'agree-btn', event: 'agree' }) 告知平台用户已经同意,参数传同意按钮的id
// 用户点击拒绝后,开发者调用 resolve({ event:'disagree' }) 告知平台用户已经拒绝
}
})
4.清除历史同步状态
当用户从“微信下拉-*近-*近使用的小程序”中删除小程序时,历史同步状态将被清除。 下次访问小程序时,需要重新同步微信。 当前用户已阅读并同意小程序的隐私政策及其他收集和使用规则。
开发可以通过这种方式进行调试,也可以通过开发工具中的“清除模拟器缓存-清除授权数据”来清除历史同步状态。
3. 其他说明 4. 完整示例演示
demo1:演示wx的使用。 并处理首页隐私弹窗逻辑
demo2:演示wx的使用。 并处理多个页面的隐私弹窗逻辑,并演示了如何处理多个隐私接口的同时调用。
demo3:演示了wx.、wx.ize和组件如何一起使用
demo4:演示使用wx. 并处理多个页面的隐私弹窗逻辑
5. 常见错误说明 6. 官方隐私弹窗功能说明
为了让开发更方便地完成小程序隐私合规要求,除了通过上述指引来开发隐私协议外,平台还提供了官方的隐私授权弹窗。 启用隐私相关功能后(2023年10月17日后或开发在app.json中配置:true后),该弹窗不需要开发适应开发,会自动展示给C端用户。 具体逻辑是:
当开发调用隐私相关接口时,微信会判断该调用是否需要触发wx. 事件。 如果触发后开发没有响应,微信会主动弹出官方弹窗。 如果用户同意,接口将正常执行后续调用逻辑; 如果用户拒绝,则会报错。
需要注意的是,用户可能会拒绝官方的隐私授权弹窗。 为了避免过多弹窗打扰用户,当开发再次调用隐私相关接口时,如果距上次用户拒绝时间小于10秒,将不再触发弹窗,用户将被拒绝。直接给予通知。 开发用户的隐私授权弹窗出现错误信息。
官方的隐私弹窗会有两种风格:
与授权弹窗耦合式:用户在允许操作之前微信小程序官方开发文档小程序隐私协议开发指南——接入流程,需要在该弹窗中检查隐私协议。 如果用户在弹出窗口中拒绝,则错误消息将为用户拒绝(错误代码为103)。
直接弹窗方式:用户方直接授权隐私协议。 如果用户在弹窗中拒绝,则错误信息为用户未同意隐私协议(错误代码为104)。
基础库后续版本将支持与授权弹窗的耦合方式(支持的版本稍后更新)。 在较低版本的基础库中,所有的弹窗都会使用直接弹窗风格。