评论

关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码

关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码

官方公告地址:

https://developers.weixin.qq.com/community/develop/doc/00042e3ef54940ce8520e38db61801

目前,开发工具或者体验版的小程序,调试基础库如果是2.33.0及以上就得适配了,线上版本9月15日之后生效,所以这之前需要尽快改完,发布一版,否则到了9月15号之后 线上就会生效报错了。

其实改起来也很简单,以下是实现步骤和代码:

1、首先看一下这个网址,里边包含涉及到的隐私的接口,这些接口都要适配一下

https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html

在以上接口用到的页面,需要画一下类似上边的弹窗(这个弹窗可以全局定义个组件,方便多个页面共用),然后里边蓝字可以点击后调用wx.openPrivacyContract(Object object)接口即可,会自动跳转打开隐私协议页面。

拒绝按钮可以加一个点击事件,然后在事件里这样写

同意按钮比较特殊,布局需要用button这样写,记得给button加一个Id

然后在handleAgreePrivacyAuthorization里就可以获取到点击事件,这样写

2、最后需要在onLoad或者onShow里加上以下监听代码,在这里边让自定义的隐私弹窗显示出来即可。


以上代码加上就可以了,如果业务逻辑用到了需要判断是否授权过,可以加上 wx.getPrivacySetting(Object object)去获取是否授权过,用不到可以不加这个判断。

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

84 个评论

  • 想🍑
    想🍑
    2023-08-23

    无论怎么弄 他这个api都监听不到我获取手机号的请求 一直不触发 大佬们有什么方法嘛

    直接是进不去 手机号都获取烂了

    并且有没有清空授权的方案 批量测试根本没法测试 怎么上线

    吐槽一下:微信的开发组真的像闹着玩儿一样

    2023-08-23
    赞同 1
    回复 9
    • 想🍑
      想🍑
      2023-08-23
      过了的大佬球球加个v  sunyifang535 多谢了
      2023-08-23
      回复
    • « 子不语
      « 子不语
      2023-08-23
      app.json中增加"__usePrivacyCheck__": true配置,再就是你把基础库设置3.0.0看下呢
      2023-08-23
      回复
    • Always Online
      Always Online
      2023-08-28回复« 子不语
      我想问下,uniapp的项目怎么办
      2023-08-28
      回复
    • « 子不语
      « 子不语
      2023-08-30回复Always Online
      其他好像没差,同意按钮用这个@agreeprivacyauthorization
      2023-08-30
      回复
    • Always Online
      Always Online
      2023-08-30回复« 子不语
      uniapp没有app.json文件,在哪配置这个属性
      2023-08-30
      回复
    查看更多(4)
  • z
    z
    2023-08-17

    你好,我想问一下,没有授权过的情况:

    wx.onNeedPrivacyAuthorization 授权不能直接在进小程序就直接调用吗?后续用隐私相关的就不用掉了。。。还是说只能在 【使用每一个隐私相关接口前】 都必须调用一次这个?

    wx.onNeedPrivacyAuthorization 的授权一次是对【所有】隐私相关接口生效?还是对【某一类】的隐私相关接口生效?

    2023-08-17
    赞同 1
    回复 19
    查看更多(14)
  • 梦游
    梦游
    2023-08-16

    每个用到隐私接口的页面都要引入一下组件会不会太麻烦了,有更好的解决方法吗

    2023-08-16
    赞同 1
    回复 2
  • FJH
    FJH
    2023-10-31

    官方开发人员就是闲的蛋疼,又没技术优化小程序性能,就只在这些无关紧要的地方改改改,试问个人信息有多少人是没被互联网扒过的,一直做小程序一直改,隐私不知道改多少回了,安卓机该卡的还是卡,有这么多时间没地方用,就多多学学技术优化性能,要不去工地搬砖得了,不适合做程序员为难同行

    2023-10-31
    赞同
    回复
  • J.
    J.
    2023-10-27

    官方熊神经病   早干嘛来 一会自己弹  一会让开发者弹!一开始你自己出个弹窗不就都解决了 艹

      废物

    2023-10-27
    赞同
    回复
  • 2023-09-16

    9月16日了,怎么还没生效啊,老板把技术部的骂了一遍了,怎么没生效,之前1个月的时间都白干活了吗? 客户也不给钱了。

    2023-09-16
    赞同
    回复
  • 牛
    2023-09-14

    嘿嘿

    2023-09-14
    赞同
    回复
  • 李振中@特产帮帮主
    李振中@特产帮帮主
    2023-09-14

    https://developers.weixin.qq.com/community/develop/doc/000ca6a02e4bd81b4b507b18a6bc00

    大侠请帮忙看看这个问题

    2023-09-14
    赞同
    回复
  • 李振中@特产帮帮主
    李振中@特产帮帮主
    2023-09-14

    各位大侠帮忙看看,拒绝按钮失效,点了没用。 我想点了关闭弹窗。


     // component/privacy/privacy.js

    Component({

        /**

         * 组件的初始数据

         */

        data: {

            privacyContractName: '',

            showPrivacy: false

        },

        /**

         * 组件的生命周期

         */

        pageLifetimes: {

            show() {

                const that = this

             if( wx.getPrivacySetting){

                wx.getPrivacySetting({

                    success(res) {

                        console.log("是否需要授权:",res.needAuthorization,  "\n隐私协议的名称为:", res.privacyContractName)

                        if (res.errMsg == "getPrivacySetting:ok") {

                            that.setData({

                                privacyContractName: res.privacyContractName,

                                showPrivacy: res.needAuthorization

                            })

                        }

                    }

                })

             }else{

                 console.log("基础库低于2.23.3版本")

             }

                

            }

        },

        /**

         * 组件的方法列表

         */

        methods: {

            // 打开隐私协议页面

            openPrivacyContract() {

                wx.openPrivacyContract({

                    fail: () => {

                        wx.showToast({

                            title: '遇到错误',

                            icon: 'error'

                        })

                    }

                })

            },

            // 拒绝隐私协议

            handleDisagree() {

            console.log("拒绝协议")

            wx.showToast({

                title: '需同意才能继续使用小程序',

                icon: 'none',

                duration: 2000

                })

           // 拒绝隐私协议

           const that= this

           that.setData({

               showPrivacy: true

           }) 

            // wx.exitMiniProgram()

         },

            // 同意隐私协议

            handleAgree() {

                const that= this

                that.setData({

                    showPrivacy: false

                })

            },

        }

    })


    2023-09-14
    赞同
    回复 2
  • 愈😊
    愈😊
    2023-09-14

    请教下:如果微信版本过低,是不是拉不起隐私弹窗?

    2023-09-14
    赞同
    回复 1
    • 一笑皆春
      一笑皆春
      2023-09-14
      基础库版本低,跟以前一样接口可以直接用,高版本才会需要弹窗
      2023-09-14
      回复

正在加载...

登录 后发表内容