微信小程序 在 2023年9月15日之后涉及处理用户个人信息的小程序开发者,需通过弹窗等明显方式提示用户阅读隐私政策等收集使用规则。我们在使用小程序与用户隐私相关接口( 如 : 获取用户信息、相册使用等 )时需要用户授权才能正常调用。
官方说明
https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html
开发者需在「小程序管理后台」配置《小程序用户隐私保护指引》,详细指引可见:用户隐私保护指引填写说明。
需要注意的是,仅有在指引中声明所处理的用户信息,才可以调用平台提供的对应接口或组件。若未声明,对应接口或组件将直接禁用。隐私接口与对应的处理的信息关系可见:小程序用户隐私保护指引内容介绍。
此步骤需要填写 《用户隐私保护指引设置》,填写完成后等待微信官方审核。
从基础库 2.32.3 开始支持
开发者可通过 wx.getPrivacySetting 接口,查询微信侧记录的用户是否有待同意的隐私政策信息。该信息可通过返回结果 res 中的 needAuthorization 字段获取。uni-app 示例代码 :
<script>
export default {
data() {
return {
showPrivacy : false,
resolvePrivacyAuthorization : null
}
},
onLoad:function(){
// #ifdef MP-WEIXIN
wx.getPrivacySetting({
success: res => {
console.log(res)
// 返回结果为:
// res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
},
fail: () => {},
complete: () => {}
})
// #endif
},
methods: {
}
}
</script>
同时,wx.getPrivacySetting 接口会返回开发者在小程序管理后台配置的《小程序用户隐私保护指引》名称信息,开发者可以调用 wx.openPrivacyContract 接口打开该页面。
如果存在有待用户同意的隐私政策信息,开发者需要主动提示用户阅读隐私政策等收集使用规则,对于提示方式,小程序开发者可自行设计,同时需要在相关界面中使用 <button open-type="agreePrivacyAuthorization"> 组件,当用户轻触该 <button> 组件后,表示用户已阅读并同意小程序的隐私政策等收集使用规则,微信会收到该同步信息,此时开发者可以在该组件的 bindagreeprivacyauthorization 事件回调后调用已声明的隐私接口。
uni-app + graceUI 6 示例代码:
<template>
<gui-page>
<template v-slot:gBody>
<view class="">页面内容</view>
<!-- #ifdef MP-WEIXIN -->
<!-- 隐私授权弹窗 -->
<gui-modal
ref="guimodal"
width="660rpx"
:isCloseBtn="false"
title="用户隐私保护提示">
<template v-slot:content>
<scroll-view
scroll-y
:style="{height:contentHeight+'px'}"
class="gui-bg-gray gui-dark-bg-level-2">
<view style="padding:50rpx 30rpx;">
<view class="">
<text class="gui-block gui-text">感谢您使用**小程序,请阅读并同意</text>
</view>
<view style="padding:35rpx 0;">
<text class="gui-color-blue gui-h5" @tap="openXY">《用户隐私保护指引》点击打开</text>
</view>
<view>
<text class="gui-block gui-text">当您点击同意并开始时用产品服务时,即表示你已理解并同息该条款内容,该条款将对您产生法律约束力。如您拒绝,将无法正常使用**小程序。</text>
</view>
</view>
</scroll-view>
</template>
<template v-slot:btns>
<!-- 利用 flex 布局 可以放置多个自定义按钮哦 -->
<view class="gui-flex gui-rows gui-space-between">
<text
class="modal-btns gui-block-text gui-color-gray"
@tap="disagree">不同意</text>
<button
type="default"
class="gui-button gui-noborder modal-btns"
id="agree-btn"
:plain="true"
open-type="agreePrivacyAuthorization"
@agreeprivacyauthorization="handleAgreePrivacyAuthorization">
<text
class="gui-color-green gui-button-text">同意</text>
</button>
</view>
</template>
</gui-modal>
<!-- #endif -->
</template>
</gui-page>
</template>
<script>
import graceJS from '@/Grace6/js/grace.js';
export default {
data() {
return {
showPrivacy : false,
resolvePrivacyAuthorization : null
}
},
onLoad:function(){
// #ifdef MP-WEIXIN
wx.getPrivacySetting({
success: res => {
console.log(res)
// 返回结果为:
// res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
// 需要授权
if (res.needAuthorization){
graceJS.getRefs('guimodal', this, 0, (ref)=>{
// 获取到 ref
ref.open();
});
}
},
fail: () => {},
complete: () => {}
})
// #endif
},
methods: {
// #ifdef MP-WEIXIN
openXY : function(){
wx.openPrivacyContract();
// 真机测试会打开协议页面
},
handleAgreePrivacyAuthorization:function(){
this.$refs.guimodal.close();
},
disagree:function(){
this.$refs.guimodal.close();
}
// #endif
}
}
</script>
<style scoped>
.modal-btns{line-height:88rpx; font-size:26rpx; text-align:center; width:200rpx;}
</style>
点击 微信开发者工具 清缓存 > 清除全部缓存 可以重置授权,进行测试。