评论

一个组件解决隐私授权:小程序用户隐私保护授权弹窗组件

使用组件实现弹窗提示用户阅读隐私保护指引的功能。

项目链接:https://github.com/94xy/miniprogram-privacy

效果预览:


使用方法:

1、复制项目 component 文件夹中的 privacy 文件夹到小程序项目中的组件目录;

2 、在 page.json 中引入组件

{
  "usingComponents": {
    "Privacy": "/component/privacy/privacy"
  }
}

3 、在 page.wxml 中使用组件,需要授权显示弹窗,不需要不显示

<Privacy />

4 、可以在所有使用了隐私接口的页面都加上该组件,授权一次之后使用所有隐私接口不再需要授权


跳过阅读:

可以不阅读就点击“同意”按钮

<Privacy skipRead="{{true}}" />


流程:

  1. 页面显示时使用 wx.getPrivacySetting 接口查询是否需要授权,需要授权则显示组件;
  2. 用户点击“拒绝”直接退出小程序,用户点击“同意”关闭弹窗并同步给微信,之后可以正常使用所有隐私接口。


注意事项:

  1. 2023 年 9 月 15 号之前,默认不会启用隐私相关功能,所以检测不到需要弹窗的情况,可以在 app.json 中配置 "__usePrivacyCheck__": true 之后,接口才可以检测到是否需要弹窗。个人实际情况:我在开发者工具中配置了 "__usePrivacyCheck__": true ,needAuthorization 无论如何返回的都是 false,但在真机模拟的情况下可以返回 true
  2. 自动打开隐私保护指引界面需在「小程序管理后台」配置《小程序用户隐私保护指引》,官方用户隐私保护指引填写说明


取消授权:

  • 微信中「微信下拉-最近-最近使用的小程序」中删除小程序可取消授权。
  • 开发者工具中「清除模拟器缓存-清除授权数据」可取消授权。


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

76 个评论

  • surp rise
    surp rise
    2023-08-31

    你好,我在 onload里面有获取地理位置这样一段代码,我的隐私弹框要怎么写  uni.getSetting({

        success(res) {

          if (res.authSetting['scope.userLocation']) {

            that.t()

          } else {

            that.h();

          }

        }

      })


    2023-08-31
    赞同
    回复 1
    • momo
      momo
      2023-08-31
      先使用onNeedPrivacyAuthorization监听,获取位置时自动触发需要授权事件,授权完它会自己继续获取位置(自己继续这个应该是这样,但我没申请获取位置权限无法测试)
      2023-08-31
      回复
  • 赛德·黑布流球    、
    赛德·黑布流球 、
    2023-08-31

    已接入,感谢大佬!

    2023-08-31
    赞同
    回复
  • 星空
    星空
    2023-08-31

    阅读协议之后重新去调用wx.getPrivacySetting, 发现needAuthorization值仍为true,不是必现,是偶现的,刚同意授权就再去查的话获取结果可能还是老的。

    2023-08-31
    赞同
    回复 3
    • momo
      momo
      2023-08-31
      刚测试了一次,没有复现出来
      2023-08-31
      回复
    • 毕竟1米八 ¹
      毕竟1米八 ¹
      2023-09-09回复momo
      楼主请教一下,我发布后,线上必须要手动删除小程序再打开才检测生效,怎么解决这个让用户手动删掉重新打开问题?
      2023-09-09
      回复
    • momo
      momo
      2023-09-10回复毕竟1米八 ¹
      不需要解决,组件只要检测到需要授权就会弹窗,没有弹窗表示不需要授权可以正常使用相关接口;另外隐私协议更新也可以触发重新要求授权,如果是例外情况:新版本发布后用户使用的还是旧版本可以在后台设置最低版本要求触发自动更新小程序
      2023-09-10
      回复
  • DC
    DC
    2023-08-31

     "__usePrivacyCheck__": true设置发布到生产环境会生效吗

    2023-08-31
    赞同
    回复 2
    • momo
      momo
      2023-08-31
      会,我之前就是本地测试无效,就没删,结果发布到线上后有效,导致线上无法使用
      2023-08-31
      回复
    • 毕竟1米八 ¹
      毕竟1米八 ¹
      2023-09-09
      线上必须要手动删除小程序再打开才检测生效,怎么解决这个让用户手动删掉重新打开问题?
      2023-09-09
      回复
  • 星空
    星空
    2023-08-31

    针对那些一进入界面就调用的api呢,是不是在点击完弹窗确认按钮后要重新执行下界面的onload,onshow重新刷新界面?

    2023-08-31
    赞同
    回复 1
    • momo
      momo
      2023-08-31
      建议单独处理,可以在 onload中使用wx.onNeedPrivacyAuthorization监听,然后使用wx.requirePrivacyAuthorize模拟,需要授权就弹窗,授权之后再调用接口
      2023-08-31
      回复
  • 苏格拉没有底
    苏格拉没有底
    2023-08-31

    你好大佬,我想问这次微信的这个隐私保护的这个玩意和我之前的这个弹框授权有啥影响吗,我不是很明白呢,能解惑一下吗,谢谢

    2023-08-31
    赞同
    回复 3
    • momo
      momo
      2023-08-31
      你好,微信的这次修改,如果你的确定按钮是<button id="agree-btn" open-type="agreePrivacyAuthorization">确定</button>,或者使用了wx.onNeedPrivacyAuthorization监听并同步用户同意的结果给微信,用户点确定以后可以正常调用隐私接口获取位置,否则用户点了确定你也无法调取隐私接口获取位置
      2023-08-31
      回复
    • 苏格拉没有底
      苏格拉没有底
      2023-08-31回复momo
      好的,谢谢,我研究下
      2023-08-31
      回复
    • 苏格拉没有底
      苏格拉没有底
      2023-08-31回复momo
      那如果  我使用了wx.onNeedPrivacyAuthorization监听并同步用户同意的结果给微信之后,获取地理位置信息还需要用户再次像图片那样弹框授权吗
      2023-08-31
      回复
  • 🐌・ω・loading~
    🐌・ω・loading~
    2023-08-30

    我在开发者工具中配置了 "__usePrivacyCheck__": true ,needAuthorization 无论如何返回的都是 false,但在真机模拟的情况下可以返回 true

    这个知道是什么原因吗?我换了另外的小程序appId,就返回true了,但用回之前那个,就一直是false

    2023-08-30
    赞同
    回复 3
    • nia
      nia
      2023-08-31
      请问解决没,我也是有这种情况
      2023-08-31
      回复
    • Jimmy李
      Jimmy李
      2023-09-02
      我是无论真机还是开发者工具都是needAuthorization  返回的都是 false,不知道怎么搞了
      2023-09-02
      回复
    • 🐌・ω・loading~
      🐌・ω・loading~
      2023-09-03回复nia
      后台审核时的隐私政策要选采用隐私政策才行,不然就会一直返回false
      2023-09-03
      回复
  • 旧识_
    旧识_
    2023-08-30

    有遇到获取完隐私的接口后,地理位置就获取不成功的嘛

    2023-08-30
    赞同
    回复
  • 君墨
    君墨
    2023-08-30

    你好,如果我只是想在登录页面使用,在点击获取手机号码登录时使用,这种情况下,这个弹窗和官方默认的手机号授权弹窗怎么结合呢?


    2023-08-30
    赞同
    回复 5
    • momo
      momo
      2023-08-30
      可以只使用 wxml和 wxss,自己写逻辑,页面 onload 时使用wx.onNeedPrivacyAuthorization监听,未授权的情况下点击获取手机号自动触发需要授权事件,此时显示弹窗,同意后重新点击获取手机号(最后这里重新让用户点击不确定是不是只能这样,目前没看到可以监听用户同意的接口)
      2023-08-30
      回复
    • 旧识_
      旧识_
      2023-08-30回复momo
      wx.onNeedPrivacyAuthorization一直监听不到是什么情况,我重新获取官方的位置信息弹框也不出现了,直接就走失败了
      2023-08-30
      回复
    • momo
      momo
      2023-08-30回复旧识_
      打印错误信息,应该会有写
      2023-08-30
      回复
    • 海越
      海越
      2023-08-31回复momo
      20个页面用到隐私权限,20个页面的onload都加么
      2023-08-31
      回复
    • momo
      momo
      2023-08-31回复海越
      是的,另外,目前测试了部分接口,触发时需求授权,授权完它会自己继续执行之前的逻辑(大部分接口没有申请,所以无法测试,我觉得应该是一样的:授权后不需要自己重新执行需要授权时中断的逻辑)
      2023-08-31
      回复
  • 脆脆鲨运动不了一点
    脆脆鲨运动不了一点
    2023-08-30

    是不是如果用户隐私授权弹窗用户拒绝的话就不能调用接口?

    2023-08-30
    赞同
    回复 1
    • momo
      momo
      2023-08-30
      是的,而且调用隐私接口时没有任何提示,看上去就像小程序无法使用
      2023-08-30
      回复

正在加载...

登录 后发表内容