评论

小程序隐私保护指引设置的调试心得

记录小程序隐私保护接口调试过程中的问题

微信官方于8月10日发布了《关于小程序隐私保护指引设置的公告》,但是就目前大家的开发、调试以及产品上的问题,并没有做出统一的答复,这里我开一个专门的文章,来记录接口调试过程中的问题,以及找一找大家的问题,尝试做一个整理。

开发历程

——8月22日晚——

官方更新了文档,目前已经可以正常开发调试了:

以下指南中涉及的 getPrivacySetting、onNeedPrivacyAuthorization、requirePrivacyAuthorize 等接口目前可以正常接入调试。调试说明:
在 2023915号之前,在 app.json 中配置 __usePrivacyCheck__: true 后,会启用隐私相关功能,如果不配置或者配置为 false 则不会启用。
在 2023915号之后,不论 app.json 中是否有配置 __usePrivacyCheck__,隐私相关功能都会启用。

——8月16日中午——

【BUG】微信回滚了代码,此时 wx.getPrivacySetting 接口获取到的 needAuthorization 始终为 false,估计是为了解决上午开发版、体验版小程序报错的问题。

——8月16日上午——

  1. 此时 wx.getPrivacySetting 接口获取到的 needAuthorization 为 true,但是所有开发版、体验版小程序若未完成隐私保护接入,都会报错:
errMsg"requirePrivacyAuthorize:fail privacy permission is not authorized"
errno104
  1. 【BUG】在 wx.onNeedPrivacyAuthorization 回调后获取到了 resolve 对象,并在用户点击同意后进行了回调,但是发现当buttonId指定错的时候接口报错:
errMsg"requirePrivacyAuthorize:fail privacy permission is not authorized or buttonId is wrong"
errno104

诡异的是就算报错了,调用隐私接口时也能够成功。

——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。

最后一次编辑于  2023-08-24  
点赞 3
收藏
评论

7 个评论

  • 方包
    方包
    2023-09-05

    问一下,这个__usePrivacyCheck__: true 设置对企业微信小程序有没有影响?企业微信小程序需不需要配置?

    2023-09-05
    赞同 1
    回复 1
  • 螃蟹没爪儿
    螃蟹没爪儿
    2023-08-22

    账户授权过,怎么进行清理,不然目前无法进行测试呢

    2023-08-22
    赞同 1
    回复 4
    • Thermodᶜʳ
      Thermodᶜʳ
      2023-08-23
      官方至今仍未搞定…
      2023-08-23
      回复
    • undefined
      undefined
      2023-09-04
      这api真的狗屎,只能先搞个小号测
      2023-09-04
      回复
    • 瑶
      2023-09-12
      可以清理缓存
      2023-09-12
      回复
    • 超超
      超超
      2023-09-22
      你在微信开发者工具里面清除,清除隐私就行了,说白了这东西的标识存在本地
      2023-09-22
      回复
  • 小欢
    小欢
    2023-09-14

    我 9-15前已经设置了__usePrivacyCheck__: true 并发布到正式小程序了,但是在正式小程序上老用户无法出现弹窗,必须移除小程序重新打开才有,体验版没这个问题

    2023-09-14
    赞同
    回复 1
    • Thermodᶜʳ
      Thermodᶜʳ
      2023-09-15
      微信把强制弹框的时间延迟到10月17日了,你这个情况应该是老用户的小程序版本还没有更新,__usePrivacyCheck__: true这个配置没有生效
      2023-09-15
      回复
  • Jack Lin
    Jack Lin
    2023-09-12

    调用 wx.requirePrivacyAuthorize 后始终会进入到 success 回调,无法触发 wx.onNeedPrivacyAuthorization 回调,并且 wx.getPrivacySetting 接口获取到的 needAuthorization 始终为 false。

    返回一直是false appid:wxbaeed24f2a45a9e5

    2023-09-12
    赞同
    回复 2
    • Thermodᶜʳ
      Thermodᶜʳ
      2023-09-15
      有没有设置了__usePrivacyCheck__: true
      2023-09-15
      回复
    • 青青
      青青
      2023-09-22
      遇到了同样的情况
      2023-09-22
      回复
  • 朦胧
    朦胧
    2023-09-06

    马化腾就不能找几个顶级技术员,就知道复制,不知道创新和服务,真是个大商人

    2023-09-06
    赞同
    回复
  • Saas服务商Jeff
    Saas服务商Jeff
    2023-09-01

    隐私声明已配置,还是无法触发onNeedPrivacyAuthorization,几天找不到什么问题


    2023-09-01
    赞同
    回复 1
    • 阿北
      阿北
      2023-09-13
      有没有可能是基础库版本问题呢???
      2023-09-13
      回复
  • 比格莱科技-环保电镀添加剂制造商
    比格莱科技-环保电镀添加剂制造商
    2023-08-26

    您好,我们收到了相关的通知,如果不设置,会发生什么问题?


    关于小程序《用户隐私保护指引》需完善的通知

    你好,检测到你的小程序比格莱科技(wxf874e9337f28e71d)有采集用户隐私信息,根据《中华人民共和国个人信息保护法》等法规政策及平台运营规范,需在“mp.weixin.qq.com-设置-服务内容声明模块”或代码提审时完善《用户隐私保护指引》。

    若于2023年8月30日未完善,将回收小程序隐私接口调用权限。

    更多信息,可登录mp.weixin.qq.com右上角通知中心查看站内信。

    2023-08-26
    赞同
    回复
登录 后发表内容