微信官方在8月10日发布了《关于小程序隐私保护指南设置的公告》,但针对大家目前开发、调试、产品方面的问题,一直没有统一的回应。这里我会专门写一篇文章,记录接口调试过程中出现的问题,找到大家的问题,尽量整理出来。
发展历史
——8月22日晚——
官方文档已更新,可以正常开发调试:
以下指南中涉及的 getPrivacySetting、onNeedPrivacyAuthorization、requirePrivacyAuthorize 等接口目前可以正常接入调试。调试说明: 在 2023年9月15号之前,在 app.json 中配置 __usePrivacyCheck__: true 后,会启用隐私相关功能,如果不配置或者配置为 false 则不会启用。 在 2023年9月15号之后,不论 app.json 中是否有配置 __usePrivacyCheck__,隐私相关功能都会启用。
——8月16日中午——
[BUG]微信回滚了代码,这时候wx.接口总是报错,这个大概是为了解决上午小程序开发版和体验版报错的问题吧。
——8月16日上午——
此时wx.接口就获取到了true,但是所有开发版和试用版小程序如果没有完成隐私保护接入的话,就会报错:
errMsg: "requirePrivacyAuthorize:fail privacy permission is not authorized" errno: 104
[BUG]wx.回调后获取到对象,在用户点击“同意”后进行回调,但是发现当规范错误时,接口报错:
errMsg: "requirePrivacyAuthorize:fail privacy permission is not authorized or buttonId is wrong" errno: 104
奇怪的是,即便报错,但是隐私接口是可以调用成功。
8 月 15 日
开发过程中发现的问题:
【8月16日官方解决】调用wx.ize之后,会一直进入回调,无法触发wx.回调,并且wx.接口获取到的值一直为 。
问一个问题
【问题】触发时机:开发者调用需要授权的方法时,有组件(等)和API(等),是在组件初始化时还是调用API时触发?还是一定要开发者主动调用时才触发?如果没有授权,组件和API是无法调用的?(来自@金瓜兜儿)
【官方回复】API调用时触发事件,组件初始化时触发事件。上面是被动触发方式;如果要主动触发,用户可以主动调用ize来触发事件,这是两种方式,按照这个原则,用户可以自行判断执行逻辑;组件API未经授权不能调用,授权后才可以调用
—————————————————
【问题】兼容性问题:从基础库2.33.0开始支持相关接口,如果用户基础库低于此版本,相关组件的使用和API调用会失败吗?(来自@金瓜兜儿)
[官方答案] 没有
【分析】目前基础库2.33.0以上版本分布占比86.84%,基本覆盖了大部分用户,开发时调用可以简单通过:
if (wx.onNeedPrivacyAuthorization)
处理兼容性逻辑。
2.33.0以下版本的用户调用隐私接口和隐私组件不受影响。
—————————————————

【疑问】用户同意后,如果小程序有新的需要用户授权的功能,且更新了小程序用户隐私保护指南,是否还会触发需要用户再次同意?(来自@金瓜兜儿)
【官方回复】更新后仅新增接口需要再次触发用户同意
—————————————————
【疑问】如果用户同意授权后,再调用其他组件或者API,内置的授权弹窗还会再次弹出吗?(来自@金瓜兜儿)
[官方回复] 是
【分析】为了避免多次弹窗影响用户体验,建议在进入类似功能的页面前,主动调用wx.ize触发主动授权。
—————————————————
【疑问】如果小程序功能是地图相关的,需要用户同意才能进入小程序首页,如果用户不同意,只能退出小程序或者反复提示用户同意隐私声明,小程序会不会因为强制用户授权而被审核员拒绝?(来自@金瓜兜儿)
【官方回复】若是地图类小程序,若确实有位置显示内容,可以弹窗告知用户。但如果用户不同意,且没有位置显示内容,则需要允许用户正常体验。
—————————————————
[问题] 调用过程中触发API,回调会失败还是等开发者返回?(来自@金瓜兜儿)
【解答】8月16日上午测试后,wx.ize会等待开发者({ :'' })才进入流程,如果({ :'' })则进入fail流程。
—————————————————
[问题] 如果未授权用户同时调用10个不同的隐私接口,会触发多少次?(来自@-)
【答案】有待考证。
—————————————————
【疑问】初始化时触发组件,触发后组件状态是怎样的?需要重新渲染吗?还是之后会自动渲染?(来自@金瓜兜儿)
【答案】有待考证。
—————————————————
[问题] 每个页面调用隐私API的地方不明,比如我在A页面调用了3个API,是否需要在A页面准备一个隐私弹窗,其他页面也准备隐私弹窗组件?(来自@)
【答】可以参考@一笑皆春写的文章《关于wx新版隐私协议接口适配解释及实现代码》()。为每个页面准备统一的隐私弹窗组件,并在中注册,会覆盖监听器。
我还有另外两个想法,第一种就是在用户进入小程序首页的时候主动调用ize触发隐私授权,这样只需要在首页写一个隐私弹窗组件就可以了,但是缺点就是如果你的小程序有多个入口的话,这种方式可能比较麻烦。另外还有wx.接口的先例,如果用户一进入小程序就要求授权的话,微信很有可能不会批准。
第二种方法是,不使用弹窗,而是使用单独的页面进行用户授权,这种情况下可以在app.js中注册wx.,一旦触发,就跳转到该页面。
—————————————————
【问题】我在小程序后台的隐私指南中列出了三个隐私接口,例如ABC,现在用户在某个页面触发了接口A,然后用户同意授权,此时微信端记录的用户是授权接口A还是ABC三个接口都授权?(来自@BOBO)
【答】经过8月16日上午的测试,无论有多少个隐私接口,只要用户授权过一次,后续所有的隐私接口都可以授权。但调用隐私协议中没有列出的隐私接口,会直接失败,不会触发。