赞
踩
微信小程序官方公告《关于小程序隐私保护指引设置的公告》。不处理的话,会导致很多授权无法使用,比如头像昵称、获取手机号、位置、访问相册、上传图片视频、访问剪切板内容等等,具体详见《小程序用户隐私保护指引内容介绍》 。
1、在 微信公众平台的【设置】- 【服务内容与声明】
,设置用户隐私保护指引,添加项目需要的接口权限。
ps:【用户隐私保护指引】提交之后,官方会进行审核。审核通过之后,对应的接口权限才会生效。
比如:上传头像报错如下。
2、打开uniapp
项目的 manifest.json
,选择【源码视图
】, 添加配置如下配置
- "mp-weixin": {
- "__usePrivacyCheck__": true, //隐私政策
- },
3、设置微信开发者工具的调试基础库,最低2.33.0
使用wx.requirePrivacyAuthorize() 接口,验证用户之前已经同意过隐私授权
- onReady() {
- var _this = this;
-
- // 隐私政策
- wx.getPrivacySetting({
- success: res => {
- // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
- console.log(res)
- if (res.needAuthorization) {
- // 需要弹出隐私协议
- _this.$refs.privacy.privacyShow = true;
- return;
- } else {
- // 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用隐私接口
- }
- },
- fail: () => {},
- complete:() => {}
- })
- },
如果needAuthorization返回值为true,则需要用户进行隐私授权。
- <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 _this = this;
- var mapkey = uni.getStorageSync('webConfig').web_config_str.mapkey;
- uni.getFuzzyLocation({
- type: 'gcj02', //国测局坐标gcj02
- geocode: true, //是否解析地址信息,仅App平台支持
- isHighAccuracy: true, //开启高精度定位
- success(res) {
- console.log('==获取当前位置的经纬度-成功==');
- console.log(res);
-
- _this.longitude = res.longitude;
- _this.latitude = res.latitude;
-
- // 设置经纬度缓存
- uni.setStorageSync('longitude', res.longitude);
- uni.setStorageSync('latitude', 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("==根据经纬度获取所在位置==");
- console.log(res);
- _this.city = res.result.ad_info.city;
-
- // 设置城市缓存
- uni.setStorageSync('province', res.result.ad_info.province);
- uni.setStorageSync('city', res.result.ad_info.city);
- uni.setStorageSync('district', res.result.ad_info.district);
- uni.setStorageSync('address', res.result.address);
-
- }
- });
- },
- fail(err) {
- console.log('获取当前位置的经纬度-失败');
- // 设置默认城市、经纬度
- }
- });
- },
- }
- }
- </script>
- <template>
- <view>
-
- <!-- 隐私保护指引弹窗 -->
- <u-popup v-model="privacyShow" mode="center" width="600rpx" 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 scoped lang="scss">
- .privacyBox {
- width: 600rpx;
- padding: 60rpx;
- box-sizing: border-box;
- }
-
- .privacyTit {
- font-size: 32rpx;
- font-weight: bold;
- color: $uni-text-main;
- text-align: center;
- overflow: hidden;
- }
-
- .privacyDesc {
- font-size: 28rpx;
- color: $uni-text-sub;
- overflow: hidden;
- margin-top: 30rpx;
- }
-
- .privacyDesc text {
- color: $uni-primary;
- }
-
- .privacyPost {
- overflow: hidden;
- margin-top: 60rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .privacyPost .refuseBtn {
- flex: 1;
- height: 80rpx;
- line-height: 80rpx;
- text-align: center;
- font-size: 28rpx;
- font-weight: bold;
- color: #fff;
- background: $uni-info-dark;
- border-radius: 40rpx;
- box-sizing: border-box;
- overflow: hidden;
- }
-
- .privacyPost .agreeBtn {
- flex: 1;
- height: 80rpx;
- line-height: 80rpx;
- text-align: center;
- font-size: 28rpx;
- font-weight: bold;
- color: #fff;
- background: $uni-primary;
- border-radius: 40rpx;
- box-sizing: border-box;
- overflow: hidden;
- margin-left: 20rpx;
- }
- </style>
ps:弹窗组件框架,demo用的uView1版本。底层遮罩样式,可自行用view代替。
参考示例:悦玩悦乐自助棋牌室、快洗坊自助洗车。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。