6.6 KiB
6.6 KiB
小程序隐私协议填写指南
2024年起,小程序需要配置隐私保护指引才能正常使用涉及用户隐私的接口
一、为什么需要配置?
从2024年开始,微信要求所有小程序:
- 在调用涉及用户隐私的接口前,需要让用户同意隐私协议
- 必须在小程序后台配置《用户隐私保护指引》
- 未配置的接口将无法正常调用
二、常用隐私字段说明
用户信息类
| 字段 | 涉及接口 | 填写示例 |
|---|---|---|
UserInfo |
wx.getUserProfile, wx.getUserInfo | 用于展示您的头像和昵称 |
Nickname |
wx.chooseNickname | 用于获取您设置的昵称 |
位置信息类
| 字段 | 涉及接口 | 填写示例 |
|---|---|---|
Location |
wx.getLocation, wx.chooseLocation | 用于获取您的位置信息以推荐附近服务 |
ChooseLocation |
wx.chooseLocation | 用于在地图上选择位置 |
通讯信息类
| 字段 | 涉及接口 | 填写示例 |
|---|---|---|
PhoneNumber |
button(open-type="getPhoneNumber") | 用于登录验证和订单通知 |
Contact |
wx.chooseContact | 用于获取通讯录联系人 |
媒体信息类
| 字段 | 涉及接口 | 填写示例 |
|---|---|---|
Album |
wx.chooseImage, wx.chooseMedia | 用于上传图片或视频 |
Camera |
wx.openSetting, camera组件 | 用于拍摄照片或视频 |
Record |
wx.startRecord, RecorderManager | 用于录制语音消息 |
其他信息类
| 字段 | 涉及接口 | 填写示例 |
|---|---|---|
Clipboard |
wx.setClipboardData, wx.getClipboardData | 用于复制分享链接或优惠码 |
ChooseAddress |
wx.chooseAddress | 用于获取收货地址以便配送 |
MessageFile |
wx.openDocument | 用于打开微信消息中的文件 |
BluetoothInfo |
wx.openBluetoothAdapter | 用于连接蓝牙设备 |
三、如何配置
方式一:微信后台手动配置
- 登录 小程序后台
- 设置 → 基本设置 → 用户隐私保护指引
- 选择需要使用的接口
- 填写使用说明
- 提交审核
方式二:通过API配置
from mp_api import MiniProgramAPI
api = MiniProgramAPI(access_token="你的token")
# 配置隐私协议
api.set_privacy_setting(
setting_list=[
{"privacy_key": "UserInfo", "privacy_text": "用于展示您的头像和昵称"},
{"privacy_key": "Location", "privacy_text": "用于获取您的位置信息以推荐附近服务"},
{"privacy_key": "PhoneNumber", "privacy_text": "用于登录验证和订单通知"},
{"privacy_key": "Album", "privacy_text": "用于上传图片"},
{"privacy_key": "Clipboard", "privacy_text": "用于复制分享链接"},
],
contact_email="zhiqun@qq.com",
contact_phone="15880802661"
)
方式三:使用CLI工具快速配置
cd /Users/karuo/Documents/个人/卡若AI/02_卡人(水)/小程序管理/scripts
python mp_manager.py privacy --quick --email zhiqun@qq.com --phone 15880802661
四、小程序端代码实现
1. 在app.json中声明
{
"usingComponents": {},
"__usePrivacyCheck__": true
}
2. 隐私协议弹窗组件
// privacy-popup.js
Component({
data: {
showPrivacy: false
},
methods: {
// 显示隐私弹窗
showPrivacyPopup() {
if (wx.getPrivacySetting) {
wx.getPrivacySetting({
success: (res) => {
if (res.needAuthorization) {
this.setData({ showPrivacy: true })
}
}
})
}
},
// 同意隐私协议
handleAgree() {
if (wx.agreePrivacyAuthorization) {
wx.agreePrivacyAuthorization({
success: () => {
this.setData({ showPrivacy: false })
}
})
}
},
// 查看隐私协议详情
openPrivacyContract() {
wx.openPrivacyContract()
}
}
})
<!-- privacy-popup.wxml -->
<view class="privacy-popup" wx:if="{{showPrivacy}}">
<view class="popup-content">
<view class="title">用户隐私保护提示</view>
<view class="desc">
在使用本小程序前,请仔细阅读
<text class="link" bindtap="openPrivacyContract">《用户隐私保护指引》</text>
</view>
<view class="buttons">
<button class="btn-disagree" bindtap="handleDisagree">不同意</button>
<button class="btn-agree" id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgree">同意</button>
</view>
</view>
</view>
3. 在需要的页面调用
// pages/index/index.js
Page({
onLoad() {
// 检查是否需要授权
this.checkPrivacy()
},
checkPrivacy() {
if (wx.getPrivacySetting) {
wx.getPrivacySetting({
success: (res) => {
if (res.needAuthorization) {
// 需要授权,显示弹窗
this.selectComponent('#privacy-popup').showPrivacyPopup()
}
}
})
}
}
})
五、常见问题
Q1: 隐私协议需要审核吗?
配置后需要等待审核(通常1-2小时),审核通过后才会生效。
Q2: 用户拒绝后怎么办?
用户拒绝后,相关接口将无法使用。可以引导用户重新打开小程序,会再次弹出隐私协议。
Q3: 如何测试隐私协议?
在微信开发者工具中:
- 详情 → 本地设置
- 勾选"启用隐私相关接口"
- 清除授权记录后测试
Q4: 提交审核时提示隐私协议不完整?
检查以下几点:
- 是否填写了所有使用到的隐私接口
- 每个接口的说明是否清晰
- 是否填写了联系方式(邮箱或电话至少一个)
六、Soul派对小程序配置参考
# Soul派对小程序的隐私配置
setting_list = [
{"privacy_key": "UserInfo", "privacy_text": "用于展示您在Soul派对中的头像和昵称"},
{"privacy_key": "PhoneNumber", "privacy_text": "用于登录验证和购买通知"},
{"privacy_key": "Clipboard", "privacy_text": "用于复制分享链接和邀请码"},
]
# 联系方式
contact_email = "zhiqun@qq.com"
contact_phone = "15880802661"