Blogger Information
Blog 87
fans 1
comment 0
visits 59138
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
微信小程序用户隐私协议弹窗
阿杰
Original
211 people have browsed it

前言

2023 年 9 月 15 日起必须用户点击同意隐私保护政策并同步给微信之后,才可以调用微信提供的隐私接口。绝大部分的小程序都至少使用过一两个隐私接口,不处理,将会严重影响业务逻辑。所以不管是原生微信小程序还是uniapp开发的小程序,都可以将隐私授权弹框作为一个组件,在需要的页面或者全局引用。

微信小程序

1、小程序创建privacy组件

  • privacy.wxml
  1. <view class="privacy" wx:if="{{showPrivacy}}">
  2. <view class="content">
  3. <view class="title">隐私保护指引</view>
  4. <view class="des">
  5. 在使用当前小程序服务之前,请仔细阅读<text class="link" bind:tap="openPrivacyContract">{{privacyContractName}}</text>。如你同意{{privacyContractName}},请点击“同意”开始使用。
  6. </view>
  7. <view class="btns">
  8. <button class="item reject" bind:tap="exitMiniProgram">拒绝</button>
  9. <button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
  10. </view>
  11. </view>
  12. </view>
  • privacy.wxss
  1. .privacy {
  2. position: fixed;
  3. top: 0;
  4. right: 0;
  5. bottom: 0;
  6. left: 0;
  7. background: rgba(0, 0, 0, .5);
  8. z-index: 9999999;
  9. display: flex;
  10. align-items: center;
  11. justify-content: center;
  12. }
  13. .content {
  14. width: 632rpx;
  15. padding: 48rpx;
  16. box-sizing: border-box;
  17. background: #fff;
  18. border-radius: 16rpx;
  19. }
  20. .content .title {
  21. text-align: center;
  22. color: #333;
  23. font-weight: bold;
  24. font-size: 32rpx;
  25. }
  26. .content .des {
  27. font-size: 26rpx;
  28. color: #666;
  29. margin-top: 40rpx;
  30. text-align: justify;
  31. line-height: 1.6;
  32. }
  33. .content .des .link {
  34. color: #07c160;
  35. text-decoration: underline;
  36. }
  37. .btns {
  38. margin-top: 48rpx;
  39. display: flex;
  40. }
  41. .btns .item {
  42. justify-content: space-between;
  43. width: 244rpx;
  44. height: 80rpx;
  45. display: flex;
  46. align-items: center;
  47. justify-content: center;
  48. border-radius: 16rpx;
  49. box-sizing: border-box;
  50. border: none;
  51. }
  52. .btns .reject {
  53. background: #f4f4f5;
  54. color: #909399;
  55. }
  56. .btns .agree {
  57. background: #07c160;
  58. color: #fff;
  59. }
  • privacy.js
  1. // components/privacy/privacy.js
  2. Component({
  3. /**
  4. * 组件的属性列表
  5. */
  6. properties: {
  7. },
  8. /**
  9. * 组件的初始数据
  10. */
  11. data: {
  12. privacyContractName: '',
  13. showPrivacy: false
  14. },
  15. /**
  16. * 组件的生命周期
  17. */
  18. pageLifetimes: {
  19. show() {
  20. const _ = this;
  21. wx.getPrivacySetting({
  22. success(res) {
  23. // console.log(res);
  24. if (res.needAuthorization) {
  25. _.setData({
  26. privacyContractName: res.privacyContractName,
  27. showPrivacy: true
  28. })
  29. }
  30. }
  31. })
  32. }
  33. },
  34. /**
  35. * 组件的方法列表
  36. */
  37. methods: {
  38. // 打开隐私协议页面
  39. openPrivacyContract() {
  40. const _ = this;
  41. wx.openPrivacyContract({
  42. fail: () => {
  43. wx.showToast({
  44. title: '遇到错误',
  45. icon: 'error'
  46. })
  47. }
  48. })
  49. },
  50. // 拒绝隐私协议
  51. exitMiniProgram(){
  52. // 直接退出小程序
  53. wx.exitMiniProgram();
  54. },
  55. // 同意隐私协议
  56. handleAgreePrivacyAuthorization(){
  57. const _ = this;
  58. _.setData({
  59. showPrivacy:false
  60. })
  61. }
  62. }
  63. })

2、app.json文件中加”usePrivacyCheck“属性

3、页面中引用privacy组件即可

  1. <Privacy/>

  • 同意授权后便可以调用隐私接口,例如授权手机号、获取定位等,同意后要想恢复未授权隐私状态,在开发工具中清除一下授权就好

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post