微信小程序隐私授权

微信开发者平台新公告:2023年9月15之后,隐私协议将被启用,所以以后的小程序都要加上隐私协议的内容提示用户,

首先设置好隐私协议的内容,登录小程序的开发者后台,在设置--》服务内容声明--》用户隐私保护指引,点击右侧的“更新”,可以在线编辑隐私协议内容,编辑完保存;

然后在代码中创建一个components文件夹,用来放自定义组件,在里面创建一个privacy组件,

组件里面的各个页面的代码:

privacy.js:

// component/privacy/privacy.js
Component({
  /**
   * 组件的初始数据
   */
  data: {
      privacyContractName: '',
      showPrivacy: false
  },
  /**
   * 组件的生命周期
   */
  pageLifetimes: {
      show() {
          const _ = this
          wx.getPrivacySetting({
              success(res) {
                  if (res.needAuthorization) {
                      _.setData({
                          privacyContractName: res.privacyContractName,
                          showPrivacy: true
                      })
                  }
              }
          })
      }
  },
  /**
   * 组件的方法列表
   */
  methods: {
      // 打开隐私协议页面
      openPrivacyContract() {
          const _ = this
          wx.openPrivacyContract({
              fail: () => {
                  wx.showToast({
                      title: '遇到错误',
                      icon: 'error'
                  })
              }
          })
      },
      // 拒绝隐私协议
      exitMiniProgram() {
          // 直接退出小程序
          wx.exitMiniProgram()
      },
      // 同意隐私协议
      handleAgreePrivacyAuthorization() {
          const _ = this
          _.setData({
              showPrivacy: false
          })
      },
  },
})

privacy.json:

{
  "component": true,
  "usingComponents": {}
}

privacy.wxml:

<view class="privacy" wx:if="{{showPrivacy}}">
    <view class="content">
        <view class="title">隐私保护指引</view>
        <view class="des">
            在使用当前小程序服务之前,请仔细阅读<text class="link" bind:tap="openPrivacyContract">{{privacyContractName}}</text>。为了完整体验,请您点击“同意”开始使用。
        </view>
        <view class="btns">
            <button class="item reject" bind:tap="exitMiniProgram">拒绝</button>
            <button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
        </view>
    </view>
</view>

privacy.wxss:

.privacy {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, .5);
  z-index: 9999999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.content {
  width: 632rpx;
  padding: 48rpx;
  box-sizing: border-box;
  background: #fff;
  border-radius: 16rpx;
}

.content .title {
  text-align: center;
  color: #333;
  font-weight: bold;
  font-size: 32rpx;
}

.content .des {
  font-size: 26rpx;
  color: #666;
  margin-top: 40rpx;
  text-align: justify;
  line-height: 1.6;
}

.content .des .link {
  color: #07c160;
  text-decoration: underline;
}

.btns {
  margin-top: 48rpx;
  display: flex;
}

.btns .item {
  justify-content: space-between;
  width: 244rpx;
  height: 80rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 16rpx;
  box-sizing: border-box;
  border: none;
}

.btns .reject {
  background: #f4f4f5;
  color: #909399;
}

.btns .agree {
  background: #07c160;
  color: #fff;
}

一般在首页(小程序第一个加载的页面)把这个隐私协议组件引入,例如index是我的首页,在index.json文件内引入这个组件:

{
    "navigationBarTitleText": "首页",
    "enablePullDownRefresh": false,
    "usingComponents": {
        "custom-tab-bar": "/components/custom-tab-bar/index",
        "Privacy": "/components/privacy/privacy"
    }
}

然后在index.wxml页面放这个组件就行了,可以放到任意位置:

<!--隐私协议-->
<Privacy />

这样第一次进入小程序的时候会出现一个弹窗,用户点击同意后就不会再出现了,除非主动删除了这个小程序,

在app.json页面加上"__usePrivacyCheck__": true,这样隐私协议就引入结束了。

上边的项目是在小程序内部的框架写的代码,后来有一个项目是用uniapp框架写的,打包成微信小程序后运行的,我在components 文件夹下新增了一个隐私协议的组件,打包后在小程序上没有任何隐私协议的内容出现,于是就放弃了在uniapp内添加隐私协议,先把uniapp项目打包成微信小程序(此时项目内没有隐私协议的任何内容),然后在微信开发者共工具上运行代码,在components文件夹下把上边的privacy文件夹复制粘贴过来,在登录页面引入了隐私组件"Privacy": "/components/privacy/privacy"

在页面内:

<!--隐私协议-->

<Privacy />

在app.json:

 "lazyCodeLoading": "requiredComponents",

  "__usePrivacyCheck__": true

上边那句是按需注入,上传代码的时候不写这句会警告提示,

然后保存代码,关闭开发工具再次打开,就能正常显示了。

在某个采集用户信息的页面底部可以加个链接跳转隐私协议内容,调用wx.openPrivacyContract这个小程序API直接打开,例如这种效果:

在页面添加代码:

<view class="go-yinsi" @click="openyinsi">《用户服务协议》及《隐私政策》</view>

methods:{
            //打开隐私协议内容
            openyinsi(){
                //#ifdef MP-WEIXIN
                wx.openPrivacyContract({
                  success: (e) => {
                      console.log("隐私协议打开成功e",e)
                  },
                  fail: (e) => {
                      console.log("隐私协议打开失败e",e)
                  }
                })
                //#endif
            },

}

样式:

.go-yinsi{
    font-size: 14px;
    color: #0f40f5;
    text-align: center;
    margin-top: 40px;
    margin-bottom: 0px;
}

这样可以直接打开隐私协议的内容。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值