评论

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

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

项目链接: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 个评论

  • 追梦者
    追梦者
    2023-09-05

    大佬你好,我是新手。向您请教哈!1、是不是只要把截图红框的两处地方,源码复制到已有的小程序就行了

    2、如果是打开小程序,自动弹窗,是不是不用再这个页面写代码了呢

    2023-09-05
    赞同
    回复 4
    • momo
      momo
      2023-09-05
      不是呢,先引入再使用,看项目介绍
      2023-09-05
      回复
    • 追梦者
      追梦者
      2023-09-06回复momo
      引用了呢,弹窗没显示出来
      2023-09-06
      回复
    • momo
      momo
      2023-09-06回复追梦者
      你截图json和wxml不是同一个页面,另外检查__usePrivacyCheck__和sdk版本
      2023-09-06
      回复
    • 追梦者
      追梦者
      2023-09-07回复momo
      非常感谢,已经可以在开发环境调试显示了。就是发布线上之后,还没显示。
      2023-09-07
      回复
  • PinkMan
    PinkMan
    2023-09-05

    楼主 我想问下 我在首页引入了 首页使用了定位权限,然后弹窗出来了。里面的页面有用到摄像头和语音权限,但是没有弹出那个授权的弹窗

    2023-09-05
    赞同
    回复 4
    • momo
      momo
      2023-09-05
      用户点同意之后,可以使用所有隐私接口,不需要再弹窗
      2023-09-05
      回复
    • 千年一叹
      千年一叹
      2023-09-08回复momo
      楼主,请问如果能保证隐私权限调用,全部在首次授权弹窗点击同意之后,是否就不需要在涉及的每个页面单独引入和处理相关逻辑了?比如,在登录弹窗点击登录的时候弹这个,点击同意之后,再执行登录逻辑,那么在登录成功之后遇到的隐私权限调用,是否都能直接调用,无须单独引入该组件了?谢谢
      2023-09-08
      回复
    • momo
      momo
      2023-09-08回复千年一叹
      是的,无须再单独引入
      2023-09-08
      回复
    • 西门紫凌
      西门紫凌
      2023-09-13
      我想问一下 你使用了定位权限 他们弹出怎么控制顺序的 我发现我先出来授权微信步数 后出来隐私授权弹框
      2023-09-13
      回复
  • 张OO
    张OO
    2023-09-05

    大佬 如果是Vue2 uniapp的写法怎么改造呢


    2023-09-05
    赞同
    回复 1
    • momo
      momo
      2023-09-05
      很多年不用 uni,接口也一直在更新,建议自己参考着写
      2023-09-05
      回复
  • 快樂的小飞猪
    快樂的小飞猪
    2023-09-05

    接口getPrivacySetting 报 is not a function 是什么问题呢? webview 用的SDK是1.6.0的

    2023-09-05
    赞同
    回复 1
    • momo
      momo
      2023-09-05
      sdk需要2.32.3以上
      2023-09-05
      回复
  • 阿诺
    阿诺
    2023-09-04

    同意授权之后,清除缓存是不是可以再弹出来啊,是的吧

    2023-09-04
    赞同
    回复 1
    • momo
      momo
      2023-09-04
      清除授权数据
      2023-09-04
      回复
  • 皮卡丘的皮
    皮卡丘的皮
    2023-09-04

    大佬厉害 已经拿过去可以直接用了

    2023-09-04
    赞同
    回复
  • 偏爱
    偏爱
    2023-09-04

    <button open-type="getPhoneNumber|agreePrivacyAuthorization"> 这个掉不起来

    2023-09-04
    赞同
    回复 1
    • momo
      momo
      2023-09-04
      同意按钮本身不会调起任何东西
      2023-09-04
      1
      回复
  • Yiu
    Yiu
    2023-09-04

    如果进入其他页面都需要先经过主页面,那我在主页面加一个这个弹窗是不是其实就可以了

    2023-09-04
    赞同
    回复 1
    • WANGGANG
      WANGGANG
      2023-09-04
      是的
      2023-09-04
      1
      回复
  • 倔

强

的

小

红

军
    倔 强 的 小 红 军
    2023-09-04


    [渲染层错误] getPhoneNumber:fail privacy permission is not authorized,errno:104(env: Windows,mp,1.06.2301171; lib: 2.32.3)


    无效的 app.json ["__usePrivacyCheck__"]

    pages/index/index: 无效的 page.json ["Privacy"]

    2023-09-04
    赞同
    回复 8
    • 倔

强

的

小

红

军
      倔 强 的 小 红 军
      2023-09-04
      大佬这是咋回事
      2023-09-04
      回复
    • momo
      momo
      2023-09-04
      1 提示未授权,正常情况,2 可以忽略或把基础库切换到最新,3 是你代码写的不规范
      2023-09-04
      1
      回复
    • 倔

强

的

小

红

军
      倔 强 的 小 红 军
      2023-09-04回复momo
      现在只提示无效的 app.json ["__usePrivacyCheck__"]
      pages/index/index: 无效的 page.json ["Privacy"] 这两个了
      2023-09-04
      回复
    • 倔

强

的

小

红

军
      倔 强 的 小 红 军
      2023-09-04回复momo
      然后我点击登录也没有隐私那个弹窗 在wxml里面也引用了
      2023-09-04
      回复
    • momo
      momo
      2023-09-04回复倔 强 的 小 红 军
      你搞复杂了,先把基础库版本设置为3.0.1,参考项目中是如何使用的
      2023-09-04
      1
      回复
    查看更多(3)
  • 渡
    2023-09-04
    已经在用户隐私保护指引里设置好了,并且引入了component的privacy  在页面使用了<Privacy />
    

    没有反应 并且控制台报错无效的 app.json ["__usePrivacyCheck__"]

    2023-09-04
    赞同
    回复 6
    • momo
      momo
      2023-09-04
      报错是平台的原因可忽略,或可尝试讲基础库版本设置为最新并清除授权后重试
      2023-09-04
      回复
    • 渡
      2023-09-04回复momo
      真机调试会报510 error occurs:no such file or directory, open wxfile://ad/interstitialAdExtInfo.txt , error occurs:no such file or directory, access.wxfile://usr/miniprogramLog/log2  这个是什么原因啊大佬 当前依然没有效果 已经清理过缓存
      2023-09-04
      回复
    • momo
      momo
      2023-09-04回复
      这个错误应该是你自己代码的问题,跟当前文章所讨论的范围完全无关
      2023-09-04
      回复
    • 渡
      2023-09-04回复momo
      needAuthorization: false 这个一直为false 真机调试也是false  用户隐私权限已经填好了 并且通过审核了
      2023-09-04
      回复
    • 渡
      2023-09-04回复
      大佬辛苦了.  json里面多打个空格 才找到错误
      2023-09-04
      回复
    查看更多(1)

正在加载...

登录 后发表内容