uni-app 应对微信小程序最新隐私协议接口要求的处理方法

这篇具有很好参考价值的文章主要介绍了uni-app 应对微信小程序最新隐私协议接口要求的处理方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

uni-app 应对微信小程序最新隐私协议接口要求的处理方法

 

一,问题起因

最新在开发小程序的时候,调用微信小程序来获取用户信息的时候经常报错一个问题

fail api scope is not declared in the privacy agreement,api

更具公告,是微信更新对应的隐私协议

https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&announce_id=11691660367cfUvX&version=&lang=zh_CN&token=

uni-app 应对微信小程序最新隐私协议接口要求的处理方法

二,解决方案

下面是我总结的解决步骤

1.前往微信小程序公众平台配置设置,完善并提交信息(注意:更新好隐私协议,要通过审核的,接口才能正常访问)

uni-app 应对微信小程序最新隐私协议接口要求的处理方法

uni-app 应对微信小程序最新隐私协议接口要求的处理方法

uni-app 应对微信小程序最新隐私协议接口要求的处理方法

2.在components新增组件PrivacyPop

vue2版本

<template>
    <view class="privacy" v-if="showPrivacy">
        <view class="content">
            <view class="title">隐私保护指引</view>
            <view class="des">
                在使用当前小程序服务之前,请仔细阅读<text class="link" @tap="openPrivacyContract">{{ privacyContractName }}</text>。如你同意{{
                    privacyContractName }},请点击“同意”开始使用。
            </view>
            <view class="btns">
                <button class="item reject" @tap="exitMiniProgram">拒绝</button>
                <button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization"
                    @agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
            </view>
        </view>
    </view>
</template>
  
<script>
export default {
    data() {
        return {
            privacyContractName: '《XXX隐私保护引导》',
            showPrivacy: false
        }
    },
    methods: {
		checkPrivacySetting(){
			uni.getPrivacySetting({
			      success: res => {
					console.log("getPrivacySetting",res)
					this.showPrivacy = true
			        // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
			        // if (res.needAuthorization) {
			          // 需要弹出隐私协议
			            // this.showPrivacy = false
			        // } else {
						// this.showPrivacy = true
			          // 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私接口
			          // wx.getUserProfile()
			          // wx.chooseMedia()
			          // wx.getClipboardData()
			          // wx.startRecord()
			        // }
			      },
			      fail: () => {},
			      complete: () => {}
			})
		},
		// 打开隐私协议
        openPrivacyContract() {
            uni.openPrivacyContract({
                fail: () => {
                    uni.showToast({
                        title: '遇到错误',
                        icon: 'error'
                    })
                }
            })
        },
        // 拒绝隐私协议
        exitMiniProgram() {
			console.log("拒绝隐私协议")
			const that = this;
            // 直接退出小程序
            // wx.exitMiniProgram()
			uni.showModal({
				// 如果拒绝,我们将无法获取您的信息, 包括手机号、位置信息、相册等该小程序十分重要的功能,您确定要拒绝吗?
				content: '您确定要拒绝吗?',
				success: res => {
					if (res.confirm) {
						that.showPrivacy = false;
						uni.exitMiniProgram({
							success: () => {
								console.log('退出小程序成功');
							}
						});
					}
				}
			});
        },
        // 同意隐私协议
        handleAgreePrivacyAuthorization() {
           
			wx.requirePrivacyAuthorize({
			      success: () => {
			        // 用户同意授权
			        // 继续小程序逻辑
					 this.showPrivacy = false
			      },
			      fail: () => {}, // 用户拒绝授权
			      complete: () => {}
			    })
        }
    }
}
</script> 
  
<style scoped> .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;
 }
</style>

vue3版本

<template>
	<view class="privacy" v-if="showPrivacy">
		<view class="content">
			<view class="title">隐私保护指引</view>
			<view class="des">
				在使用当前小程序服务之前,请仔细阅读<text class="link" @tap="openPrivacyContract">{{ privacyContractName }}</text>。如你同意{{
                    privacyContractName }},请点击“同意”开始使用。
			</view>
			<view class="btns">
				<button class="item reject" @tap="exitMiniProgram">拒绝</button>
				<button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization"
					@agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
			</view>
		</view>
	</view>
</template>

<script lang="ts" setup>
	import { ref } from "vue";
	const privacyContractName = ref('《用户隐私保护引导》');
	const showPrivacy = ref(false);
	const checkPrivacySetting = () => {
		uni.getPrivacySetting({
			success: (res) => {
				showPrivacy.value = true
			}
		})
	}
	// 打开隐私协议
	const openPrivacyContract = () => {
		uni.openPrivacyContract({
			fail: () => {
				uni.showToast({
					title: '遇到错误',
					icon: 'error'
				})
			}
		})
	}

	// 拒绝隐私协议
	const exitMiniProgram = () => {
		console.log("拒绝隐私协议")
		uni.showModal({
			// 如果拒绝,我们将无法获取您的信息, 包括手机号、位置信息、相册等该小程序十分重要的功能,您确定要拒绝吗?
			content: '您确定要拒绝吗?',
			success: res => {
				if (res.confirm) {
					showPrivacy.value = false;
					uni.exitMiniProgram({
						success: () => {
							console.log('退出小程序成功');
						}
					});
				}
			}
		});
	}
	// 同意隐私协议
	const handleAgreePrivacyAuthorization = () => {

		wx.requirePrivacyAuthorize({
			success: () => {
				// 用户同意授权
				// 继续小程序逻辑
				showPrivacy.value = false
			},
			fail: () => { }, // 用户拒绝授权
			complete: () => { }
		})
	}
</script>

<style scoped>
	.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;
	}
</style>

3.在要使用的页面中引入

vue2版本

import PrivacyPop from '../../components/PrivacyPop/PrivacyPop.vue';

components:{
	PrivacyPop
},
async onLoad() {
	this.$refs.PrivacyPopck.checkPrivacySetting();
},

vue3版本(建议点击事件触发)

import PrivacyPop from '@/components/PrivacyPop.vue';
import { ref } from "vue";
const PrivacyObj = ref({
		
	})
const ClickFun = ()=>{
	if(PrivacyObj.value){
		PrivacyObj.value.checkPrivacySetting();
	}
		
}

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 uni-app 应对微信小程序最新隐私协议接口要求的处理方法文章来源地址https://www.toymoban.com/news/detail-734082.html

到了这里,关于uni-app 应对微信小程序最新隐私协议接口要求的处理方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序uni-app

    小程序 是一种不需要下载、安装即可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用,应用随处可用,但又无须安装卸载。 微信开发文档 1、工作原理 网页开发,渲染线程和脚本是互斥的

    2024年02月10日
    浏览(123)
  • 微信小程序授权(uni-app)

    概述 为了避免重复开发,自己封装了一个通用用户授权回调方法,只需要传入需要授权的scope,权限中文描述、回调函数,就可以实现一整套小程序是否授权、打开授权设置,调用后续操作函数的工作 功能 可以根据自己的实际应用进行微调 目前使用的uni-app版本,可以根据自

    2024年02月16日
    浏览(86)
  • 语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

    其中, pages 目录/ index 目录【必有】: index.js 编写业务逻辑 【初始数据,生命周期函数】 index.json 编写配置 index.wxml 编写模板 【可理解为本页html】 index.wxss 【可理解为本页css】 直接输入敲回车,连尖括号都不需要就可以标签补全 1)初始数据写死 在 index.wxml 引入变

    2024年02月12日
    浏览(174)
  • uni-app微信小程序使用echarts

    前言:本来是使用的ucharts,但因为无法监听图例点击交互,满足不了需求,所以只能放弃。 首先,下载echart组件。可以先随便建个文件夹,然后 npm init。接着下载依赖 然后找到 node_modulesmpvue-echarts下的文件,如图 只留下src,其他的删掉(没有用到)。然后复制 mpvue-echart

    2024年02月10日
    浏览(74)
  • uni-app 微信小程序 激励视频广告

    封装激励视频-Ad.js 调用上面写的方法:

    2024年02月12日
    浏览(83)
  • 【uni-app微信小程序】实现支付功能

    实现微信支付功能需要在小程序后台配置支付相关信息,并且在前端代码中调用微信支付API进行支付操作。好的, uni-app微信小程序实现支付功能整体流程 大致如下: 注册微信公众平台,并完成开发者资质认证; 在微信商户平台注册商户账号,并完成商户资质认证; 在商户

    2024年02月13日
    浏览(99)
  • uni-app(微信小程序)获取当前位置uni.getLocation

     1、微信公众平台  开发  开发管理   2、开通之后到项目文件    3、下载腾讯地图插件并引入到文件中    

    2024年02月11日
    浏览(67)
  • uni-app开发微信小程序,wx.getPrivacySetting,wx.openPrivacyContract,wx.onNeedPrivacyAuthorization,隐私弹窗使用具体代码

     弹窗 代码插件已集成,即插即用, 五分钟集成进项目, 免费下载 ,欢迎大家交流  微信小程序用户隐私保护协议弹窗插件下载 首先完成组件的界面,创建一个组件文件夹 component ,然后创建一个 privacy 子文件夹,再创建一个 privacy 组件,组件是一个 全屏蒙版 加居中弹窗,弹窗

    2024年02月09日
    浏览(68)
  • [uni-app]设置运行到微信小程序

    1、设置微信小程序开发工具路径 2、检查微信小程序开发工具是否开启了服务端口 服务端口要是没有开启,会报 × initialize。 3、在uni-app开发工具中点击运行微信开发者工具,微信开发工具运行成功。

    2024年02月13日
    浏览(69)
  • uni-app 微信小程序自定义导航栏

    上面的导航栏主要由状态栏(就是手机电量显示栏)和小程序的导航栏组成,android手机一般为48px,ios手机一般为44px 1、设置navigationStyle:custom 2、页面导航栏div 3、获取statusBarHeight高度 4、获取navTitleHeight的高度

    2024年02月14日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包