微信官方于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.getPrivacySetting 接口获取到的 needAuthorization 始终为 false,估计是为了解决上午开发版、体验版小程序报错的问题。
——8月16日上午——
- 此时 wx.getPrivacySetting 接口获取到的 needAuthorization 为 true,但是所有开发版、体验版小程序若未完成隐私保护接入,都会报错:
errMsg: "requirePrivacyAuthorize:fail privacy permission is not authorized"
errno: 104
- 【BUG】在 wx.onNeedPrivacyAuthorization 回调后获取到了 resolve 对象,并在用户点击同意后进行了回调,但是发现当buttonId指定错的时候接口报错:
errMsg: "requirePrivacyAuthorize:fail privacy permission is not authorized or buttonId is wrong"
errno: 104
诡异的是就算报错了,调用隐私接口时也能够成功。
——8月15日——
开发过程中发现的问题:
【8月16日官方已解决】调用 wx.requirePrivacyAuthorize 后始终会进入到 success 回调,无法触发 wx.onNeedPrivacyAuthorization 回调,并且 wx.getPrivacySetting 接口获取到的 needAuthorization 始终为 false。
提问
【问】onNeedPrivacyAuthorization触发时机:开发者调用需要授权的方法有组件(camera等)和api(getLocation等)形式,是在组件初始化、API调用时触发?还是要开发者主动调用requirePrivacyAuthorize才会触发,未授权的时候组件、API都无法调用?(来自 @金瓜兜儿)
【官方答复】api是在api调用时触发事件,组件是在组件初始化时机会触发事件,以上是被动触发的方式; 如果要主动触发,用户可以主动调用requirePrivacyAuthorize触发事件,这是两种方式,根据这个原则由用户自行判断执行逻辑;未授权时组件api都无法调用,授权后才可调用
————————————————
【问】兼容问题:相关接口从基础库2.33.0 开始支持,如果用户基础库低于这个版本,相关的组件使用、api调用都会失败吗?(来自 @金瓜兜儿)
【官方答复】不会
【解析】目前基础库2.33.0以上的版本分布(https://developers.weixin.qq.com/miniprogram/dev/framework/client-lib/version.html) 占比为86.84%,基本涵盖了绝大部分用户。开发的时候,调用onNeedPrivacyAuthorization可以简单地通过:
if (wx.onNeedPrivacyAuthorization)
来处理兼容性逻辑。
低于2.33.0以下的用户调用隐私接口、隐私组件不受影响。
————————————————
【问】onNeedPrivacyAuthorization在用户同意过后,如果小程序有新增需要用户授权的功能,更新了小程序用户隐私保护指引,是不是会再次触发需要用户再次同意?(来自 @金瓜兜儿)
【官方答复】更新了之后 只有新增的接口需要再次触发用户同意
————————————————
【问】如果用户同意了授权,再调用camera等组件、getLocation等API,自带的授权弹窗是否还会再次弹出?(来自 @金瓜兜儿)
【官方答复】会的
【解析】为了防止多个弹窗影响用户体验,建议在进入到有类似功能的页面前,主动调用wx.requirePrivacyAuthorize触发主动授权。
————————————————
【问】如果小程序功能是地图相关,进入小程序首页就需要用户同意,如果用户不同意就只能退出小程序、或者重复提示用户同意隐私声明,小程序审核时会不会因为强制用户授权而被审核人员驳回?(来自 @金瓜兜儿)
【官方答复】如为地图类小程序,确有定位展示内容等则可弹窗告知用户。但若用户不同意后,未涉及定位展示内容则需要让用户正常体验
————————————————
【问】api在调用时触发,回调是会进入fail还是一直等待开发者resolve后返回success?(来自 @金瓜兜儿)
【答】经过8月16日上午的测试,wx.requirePrivacyAuthorize调用后会一直等待开发者resolve({ event:'agree' })之后才会进入到success流程,如果resolve({ event:'disagree' })则进入到 fail 流程。
————————————————
【问】未授权用户同时调用10个不同的隐私接口,会触发多少次onNeedPrivacyAuthorization?(来自@georgejinme-)
【答】待验证。
————————————————
【问】组件在初始化时触发,触发之后组件是什么状态,需不需要开发者重新渲染?还是说resolve之后会自动渲染处理? (来自 @金瓜兜儿)
【答】待验证。
————————————————
【问】每个页面调用隐私api的地方都未知, 比如a页面我调用了3个api, 我是不是要在a页面准备一个隐私弹窗, 其他bcdef页面都要准备隐私弹窗组件?(来自 @axing)
【答】可以参考 @一笑皆春 写的《关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码》(https://developers.weixin.qq.com/community/develop/article/doc/000c0680fe02e02201308a4c961813),每个页面都准备一个统一的隐私弹窗组件,并且在 onShow 中注册 onNeedPrivacyAuthorization,这会覆盖监听。
我本人还有两个思路,第一种是在用户进入小程序的首页时,主动调用requirePrivacyAuthorize触发隐私授权,这样只需要在首页编写一个隐私弹窗组件,但缺点是若您的小程序有多个入口时,这个方法可能也会较为麻烦。此外,有wx.login这个接口的前车之鉴,用户一进入小程序就要求授权,很可能微信审核不予通过。
第二种是不使用弹窗,而是用一个单独的页面进行用户授权,这时在 app.js 中注册 wx.onNeedPrivacyAuthorization 即可,一旦触发就跳转至该页面。
————————————————
【问】请问,我在小程序后台隐私指引里列出了3个隐私接口,比如A B C 。现在用户在某页面触发了A接口,然后用户同意授权了。此时微信侧记录的用户授权了A接口还是A B C三个接口都授权了?(来自 @BOBO)
【答】经过8月16日上午的测试,无论有多少个隐私接口,只要用户授权过一次,后续的所有隐私接口都能授权。但是调用在隐私协议中未列出的隐私接口将直接失败,不会触发 onNeedPrivacyAuthorization。
问一下,这个__usePrivacyCheck__: true 设置对企业微信小程序有没有影响?企业微信小程序需不需要配置?
https://developer.work.weixin.qq.com/community/question/detail?content_id=16495948420590466479
账户授权过,怎么进行清理,不然目前无法进行测试呢
我 9-15前已经设置了__usePrivacyCheck__: true 并发布到正式小程序了,但是在正式小程序上老用户无法出现弹窗,必须移除小程序重新打开才有,体验版没这个问题
调用 wx.requirePrivacyAuthorize 后始终会进入到 success 回调,无法触发 wx.onNeedPrivacyAuthorization 回调,并且 wx.getPrivacySetting 接口获取到的 needAuthorization 始终为 false。
返回一直是false appid:wxbaeed24f2a45a9e5
马化腾就不能找几个顶级技术员,就知道复制,不知道创新和服务,真是个大商人
隐私声明已配置,还是无法触发onNeedPrivacyAuthorization,几天找不到什么问题
您好,我们收到了相关的通知,如果不设置,会发生什么问题?
关于小程序《用户隐私保护指引》需完善的通知
你好,检测到你的小程序比格莱科技(wxf874e9337f28e71d)有采集用户隐私信息,根据《中华人民共和国个人信息保护法》等法规政策及平台运营规范,需在“mp.weixin.qq.com-设置-服务内容声明模块”或代码提审时完善《用户隐私保护指引》。
若于2023年8月30日未完善,将回收小程序隐私接口调用权限。
更多信息,可登录mp.weixin.qq.com右上角通知中心查看站内信。