关于小程序强制开启隐私协议问题总结

为规范开发者的用户个人信息处理行为,保障用户合法权益,小程序、插件中涉及处理用户个人信息的开发者,均需补充相应用户隐私保护指引。

具体填写内容说明可见小程序用户隐私保护指引内容介绍插件用户隐私保护说明内容介绍

前言:

9月14日晚20点腾讯最新通知《关于小程序隐私保护指引设置的再次公告在这里插入图片描述

简单来说就是不仅可以不用开发了,而且还会有官方的弹窗。在这里插入图片描述

9月15日开始强制开启隐私接口必须要弹窗提醒同步状态

img

调整方法

分两步骤

1、在小程序后台填写使用到的隐私接口的用途。保护指引

2、开发人员开发弹窗功能,用于让用户阅读隐私协议。开发教程

一、填写用户隐私保护指引

1.1 填写协议位置

微信小程序后台 - 设置—基本设置—服务内容声明 - 更新

image-20230914152227473


image-20230914152347263

1.2 勾选权限

这里根据你程序中使用到的权限,进行选择,并进行有效的说明!

image-20230914152408523

关系对照,确认开发者用到哪些功能,就勾选哪些。

image-20230914151431859

1.3 填写技巧

驳回案例:

隐私接口授权信息描述存在不明确、空白、填写无意义内容、乱填写、填写过于简洁含糊等情况;

示例①: 小程序涉及多个隐私信息接口类型,信息类型填写存在不清晰且多个接口原因一致

image-20230914152624768

示例②: 小程序隐私信息接口类型存在填写无意义的内容,填写“为了收集信息而收集信息”并未清晰描述信息接口原因

image-20230914152640889

示例③: 小程序隐私信息接口类型存在填写“不清楚、不知道”、“111、AAA、!@#¥”等乱填接口原因

image-20230914152712013

示例④: 内容过于简洁或含糊,仅填写“使用、定位、开发”等内容,无法清晰了解到使用接口原因

image-20230914152700279

正确案例:

请清晰的描述使用权限的用途,例如:

  1. ​ 为了开发者收集你选中的照片或视频信息,用于在上传附件时可以发送图片或视频类型的内容
  2. 为了在文本输入框中快捷进行语音转文字技术,开发者将在获取你的明示同意后,访问你的麦克风。
  3. 为了您在报销时,可以快速的提取您的发票信息,将访问您的发票列表。

image-20230914152730307

1.4 第三方插件/SDK信息

image-20230914153904372

1.5 其他信息参考

image-20230914154243515

二、开发教程:

开发者需开发弹窗功能,用于明显的方式提示用户阅读隐私政策等收集使用规则;

以下为示例

image-20230914154640580image-20230914154939378

画一个类似上面的窗口(建议全局自定义一个复用组件)后面需要再很多地方用到。

蓝字部分加入事件,使用wx.openPrivacyContract(Object object)这个方法可打开第一步配置好的隐私协议

2.1 启用

在app.json文件中配置 __usePrivacyCheck__: true,才能启用隐私协议接口的验证。

2.2 拒绝按钮:

<button class="btn-refuse" catch:tap="clickRefuse">拒绝</button>
  
/**
 * 拒绝的事件处理
 */
refuse() {
    this.resolvePrivacyAuthorization({
      event: 'disagree'
    })
  },

2.3 同意按钮:

<button id="agree-btn" class="btn-agree" open-type="agreePrivacyAuthorization"
 bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
/**
 * 同意的事件处理
 */
handleAgreePrivacyAuthorization() {
    this.resolvePrivacyAuthorization({
      buttonId: 'agree-btn',
      event: 'agree'
    })
  },

2.4 弹窗组件:

每个要用到隐私接口的页面引用自己的隐私弹窗组件

考验你的样式功底了,如果不想自己写,可以直接打开这个链接,会在微信小程序中创建一个代码片段,里面就有隐私弹窗组件隐私弹窗链接

{
  "usingComponents": {
    "agreement": "/components/agreement/agreement"
  }
}

在用到隐私接口的页面中加入

<!-- 隐私授权弹窗 -->
<agreement id="agreement" frameTitle="温馨提示" bind:refuse="refuse" bind:agree="agree"></agreement>

2.5 弹窗使用

使用监听的方法判断是否需要弹窗授权

  
  onShow: function () {
    let that = this;
    if (wx.onNeedPrivacyAuthorization) {
      wx.onNeedPrivacyAuthorization(resolve => {
        this.selectComponent('#agreement').show();//这里是让组件弹窗显示
        this.resolvePrivacyAuthorization = resolve
      })
    }
    }

三、完整示例demo

  • demo1:

    演示使用 wx.getPrivacySetting<button open-type="agreePrivacyAuthorization"> 在首页处理隐私弹窗逻辑

    打开微信开发者工具,点击链接:https://developers.weixin.qq.com/s/gi71sGm67hK0

  • demo2:

    演示使用 wx.onNeedPrivacyAuthorization<button open-type="agreePrivacyAuthorization"> 在多个页面处理隐私弹窗逻辑,同时演示了如何处理多个隐私接口同时调用。

    打开微信开发者工具,点击链接: https://developers.weixin.qq.com/s/hndZUOmA7gKn

  • demo3:

    演示 wx.onNeedPrivacyAuthorizationwx.requirePrivacyAuthorize<button open-type="agreePrivacyAuthorization"><input type="nickname"> 组件如何结合使用

    打开微信开发者工具,点击链接: https://developers.weixin.qq.com/s/jX7xWGmA7UKa

  • demo4:

    演示使用 wx.onNeedPrivacyAuthorization<button open-type="agreePrivacyAuthorization"> 在多个 tabBar 页面处理隐私弹窗逻辑

    打开微信开发者工具,点击链接: https://developers.weixin.qq.com/s/g6BWZGmt7XK9

四、常见错误说明

**问1:**wx.getPrivacySetting接口needAuthorization为何一直返回false?

image-20230914145433260

**答1:**管理平台去更新用户隐私指引 。审核通过后 等待5分钟 清理缓存后 真机调试 就能返回了 ,开发工具也可以调试试试。

**问2:**A:fail api scope is not declared in the privacy agreement

**答2:**使用到了 A 隐私接口,但是开发者未在[后台-设置-服务内容声明-用户隐私保护指引]中声明收集 A 接口对应的隐私类型,或者协议未生效。

**问3:**如何调试?同意一次后如何清空同意的状态?

**答3:**当用户从「微信下拉-最近-最近使用的小程序」中删除小程序,将清空历史同步状态。下次访问小程序后,需要重新同步微信当前用户已阅读并同意小程序的隐私政策等收集使用规则。开发者可通过此方式进行调试,也可以在开发者工具中「清除模拟器缓存-清除授权数据」清空历史同步状态

其他问题自查,希望能帮到各位道友:
1,我用的实现方式是这个链接里的第2条的示例方式:https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html;用这个方式不需要调用微信的同意和拒绝接口,微信会根据open-type自动记录用户是否点击过同意
2,开发者工具里不能生效,必须是发布体验版才有效
3,必须设置app.json里的__usePrivacyCheck__: true
4,用到的与隐私相关的接口必须写到隐私协议里,链接是隐私的接口与名称对应关系:https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html

image-20230914151004586

image-20230914151431859

5,必须做版本兼容处理,低于2.32.3无法看到效果,兼容办法参照:https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html
6,如果你是uni-app开发,推荐使用vue组件封装这个弹窗组件,因为他很通用。
7,如果隐私协议有变更的时候,用户会重新弹窗
8,小程序在微信里长按删除可以重新触发弹窗
【PS】个人建议:
(1)在进入到需要隐私的页面的时候就弹框,不要在点击实际按钮的时候再弹,这样改动比较小,也就是在生命周期show时处理;
(2)并且将这个弹窗做成组件,供所有需要的页面使用;

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐