Taro-vue微信小程序用户隐私保护

embedded/2024/10/18 8:22:56/

Taro-vue微信小程序用户隐私保护

一、在 微信公众平台的【设置】- 【服务内容与声明】 ,设置用户隐私保护指引,添加项目需要的接口权限。

【用户隐私保护指引】提交之后,官方会进行审核。审核通过之后,对应的接口权限才会生效。
在这里插入图片描述
在这里插入图片描述

二、微信小程序官方公告《关于小程序隐私保护指引设置的公告》。不处理的话,会导致很多授权无法使用,比如头像昵称、获取手机号、位置、访问相册、上传图片视频、访问剪切板内容等等,具体详见《小程序用户隐私保护指引内容介绍》 。

三、 在app.config.js中加入

usePrivacyCheck”: true

在这里插入图片描述

四、设置微信开发者工具的调试基础库,最低2.33.0

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7a30433446c44831b2beb5bad47f720d.png

五、验证用户是否已经授权隐私协议

使用wx.requirePrivacyAuthorize() ,验证用户之前已经同意过隐私授权


onReady() {var that= this;// 隐私政策wx.getPrivacySetting({success: res => {// 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }console.log(res)if (res.needAuthorization) {// 需要弹出隐私协议that.$refs.privacy.privacyShow = true;return;} else {// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用隐私接口}},fail: () => {},complete:() => {}})
}

在这里插入图片描述

如果needAuthorization返回值为true,则需要用户进行隐私授权。

六、index引入组件

<template><view><!-- 用户隐私保护指引弹窗租金 --><UserPrivacy ref="privacy"></UserPrivacy></view>
</template><script>
import UserPrivacy from "@/components/user/userPrivacy.vue";export default {components: {UserPrivacy},data() {return {// 隐私设置弹窗开关privacyShow: false,}},onReady() {var _this = this;// #ifdef MP-WEIXIN// 隐私政策wx.getPrivacySetting({success: res => {// 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }console.log(res)if (res.needAuthorization) {// 显示用户隐私组件弹窗_this.$refs.privacy.privacyShow = true;return;} else {// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用隐私接口// 调用授权位置接口_this.getLocation();}},fail: () => {},complete:() => {}})// #endif,methods: {// 获取当前位置getLocation() {let that= this;var mapkey = Taro.getStorageSync('webConfig').web_config_str.mapkey;Taro.getFuzzyLocation({type: 'gcj02', //国测局坐标gcj02geocode: true, //是否解析地址信息,仅App平台支持isHighAccuracy: true, //开启高精度定位success(res) {console.log('==获取当前位置的经纬度-成功==');console.log(res);that.longitude = res.longitude;that.latitude = res.latitude;// 设置经纬度缓存Taro.setStorageSync('lng', res.longitude);Taro.setStorageSync('lat', res.latitude);// 引入腾讯地图SDK核心类var QQMapWX = require('@/util/qqmap-wx-jssdk.min.js');var qqmapsdk = new QQMapWX({key: mapkey,});// 根据经纬度获取所在位置qqmapsdk.reverseGeocoder({location: {longitude: res.longitude,latitude: res.latitude,},success: function(res) {console.log('565',"根据经纬度获取所在位置");that.city = res.result.ad_info.city;// 设置缓存城市Taro.setStorageSync('province', res.result.ad_info.province);Taro.setStorageSync('city', res.result.ad_info.city);Taro.setStorageSync('district', res.result.ad_info.district);Taro.setStorageSync('address', res.result.address);}});},fail(err) {console.log('获取当前位置的经纬度-失败');// 设置默认城市、经纬度}});},}
}
</script>

七、弹框组件页面

<template><view><!-- 隐私保护指引弹窗 --><u-popup v-model="privacyShow" mode="center" width="600px" border-radius="20" :mask-close-able="false"><view class="privacyBox"><view class="privacyTit">用户隐私保护提示</view><view class="privacyDesc">感谢您的使用,在使用本小程序前,应当阅读并同意<text@click="openClick">《用户隐私保护指引》</text>。当您点击同意并开始使用程序服务时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力。如您拒绝,将无法进入小程序。</view><view class="privacyPost"><view class="refuseBtn"><navigator target="miniProgram" open-type="exit">不同意并退出</navigator></view><button class="agreeBtn" open-type="agreePrivacyAuthorization"@agreeprivacyauthorization="agreeClick">同意并继续</button></view></view></u-popup></view>
</template><script>export default {data() {return {// 隐私设置弹窗开关privacyShow: false,}},onReady() {},methods: {// 打开隐私协议openClick() {wx.openPrivacyContract({success: () => {}, // 打开成功fail: () => {}, // 打开失败complete: () => {}})},// 同意授权agreeClick() {// 用户点击了同意,之后所有已声明过的隐私接口和组件都可以调用了this.privacyShow = false;// 重新授权定位,调取父组件方法this.$parent.getLocation();},}}
</script>
<style lang="scss" scoped>.privacyBox {width: 600px;padding: 60px;box-sizing: border-box;}.privacyTit {font-size: 32px;font-weight: bold;color: red;text-align: center;overflow: hidden;}.privacyDesc {font-size: 28px;color: red;overflow: hidden;margin-top: 30px;}.privacyDesc text {color: red;}.privacyPost {overflow: hidden;margin-top: 60px;display: flex;justify-content: center;align-items: center;}.privacyPost .refuseBtn {flex: 1;height: 80px;line-height: 80px;text-align: center;font-size: 28px;font-weight: bold;color: #fff;background: red;border-radius: 40px;box-sizing: border-box;overflow: hidden;}.privacyPost .agreeBtn {flex: 1;height: 80px;line-height: 80px;text-align: center;font-size: 28px;font-weight: bold;color: #fff;background: red;border-radius: 40px;box-sizing: border-box;overflow: hidden;margin-left: 20px;}
</style>

弹窗组件页面底层遮罩样式,需要自己用view代替。


http://www.ppmy.cn/embedded/6482.html

相关文章

基于Spring Cloud Alibaba+Skywalking的分布式链路追踪设计

胡弦&#xff0c;视频号2023年度优秀创作者&#xff0c;互联网大厂P8技术专家&#xff0c;Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者&#xff0c;资深架构师&#xff0c;技术负责人&#xff0c;极客时间训练营讲师&#xff0c;四…

Solidworks 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到Solidworks.2024”。 打开解压后的文件夹下的“SolidSQUAD”&#xff0c;双击“sw2024_network_serials_licensing”。 点击“是”。 点击“确定”。 复制“SolidWorks_Flexnet_Server”文件夹。 将其粘贴至C盘。 打开复制后的文件夹…

python在selenium网页模拟运行过程中需要打开文件夹上传文件的情况的解决方法

在selenium运行过程中&#xff0c;可能会遇到网页需要上传文件图片等情况&#xff0c;有时可以直接用selenium中send_keys直接上传&#xff0c;但是有时不行&#xff0c;这时我们需要用到另一个包&#xff0c;pywinauto 具体的代码如下&#xff0c; import pywinauto # pywina…

linux实用C++库之json

目录 1 介绍2 内容 1 介绍 本博客用来记录linux下json库的基本使用。 2 内容 安装&#xff1a; 使用&#xff1a; CMakeLists.txt编写&#xff1a;

web自动化系列-selenium方法和属性的使用(九)

继续介绍selenium中的一些方法和属性 &#xff0c;下面的这些方法和前面已经介绍过的clear 、send_keys等都是在一个类中&#xff0c;即WebElement 。我们其实使用很多方法都是在这个类中 。 1.方法和属性 类型方法/属性说明场景属性size返回元素的大小/属性text返回元素的文…

java解决常见递归问题

最基本的&#xff0c;斐波那契数列&#xff0c;阶乘&#xff08;0&#xff0c;1的阶乘均为1&#xff09; 返回字母“x”第一次出现的位置 使用递归编写一个函数&#xff0c;读取一个字符串&#xff0c;返回字母“x”第一次出现的位置。例如&#xff0c;字符串 "abcdefgh…

项目实践---贪吃蛇游戏的实现

上一章&#xff0c;我们已经分析了贪吃蛇的具体内容&#xff0c;包括它是如何实现的&#xff0c;怎样完成这个项目的&#xff0c;其中就提到了 贪吃蛇有三个代码&#xff1a;一个是测试代码&#xff0c;一个是头文件代码&#xff0c;还有一个是主函数代码。那么今天我们就来讲一…

从OWASP API Security TOP 10谈API安全

1.前言 应用程序编程接口&#xff08;API&#xff09;是当今应用驱动世界创新的一个基本元素。从银行、零售、运输到物联网、 自动驾驶汽车、智慧城市&#xff0c;API 是现代移动、SaaS 和 web 应用程序的重要组成部分&#xff0c;可以在面向客 户、面向合作伙伴和内部的应用程…