2.6 KiB
2.6 KiB
微信隐私授权与用户信息功能设计
概述
接入微信小游戏隐私授权 API,实现:
- 进入 PageHome 时检查用户是否已授权隐私,未授权则引导授权
- PageWriteLevels 点击分享按钮时获取用户头像、昵称并上传服务端
功能设计
1. 隐私授权检查
触发时机: PageHome onViewLoad
实现逻辑:
// 检查用户是否已授权隐私
wx.getPrivacySetting({
success: (res) => {
if (!res.needAuthorization) {
// 已授权,继续正常流程
return;
}
// 未授权,调用引导授权
wx.requirePrivacyAuthorize({
success: () => {
console.log('用户已授权隐私');
},
fail: () => {
console.log('用户拒绝授权');
}
});
}
});
2. 用户头像昵称获取
触发时机: PageWriteLevels 点击分享按钮 (_onCompleteClick)
实现逻辑:
- 调用
wx.getUserProfile获取用户头像和昵称 - 上传到服务端
- 本地 StorageManager 缓存
wx.getUserProfile({
desc: '用于完善用户资料',
success: async (res) => {
const userInfo = res.userInfo;
// 上传服务端
await HttpUtil.post(API_ENDPOINTS.USER_INFO_UPDATE, {
avatarUrl: userInfo.avatarUrl,
nickName: userInfo.nickName
});
// 本地缓存
StorageManager.setUserInfo(userInfo);
},
fail: (err) => {
console.error('获取用户信息失败', err);
}
});
3. 新增 API 端点
在 ApiConfig.ts 中添加:
| 端点 | 方法 | 用途 |
|---|---|---|
/user/info |
POST | 更新用户头像昵称 |
/user/info |
GET | 获取用户头像昵称 |
4. 数据存储
本地 StorageManager:
userInfo- 用户头像昵称缓存
服务端:
- 新增用户信息表,存储头像 URL 和昵称
文件变更
| 文件 | 变更类型 |
|---|---|
assets/scripts/config/ApiConfig.ts |
新增端点 |
assets/scripts/utils/StorageManager.ts |
新增用户信息存取方法 |
assets/scripts/utils/WxSDK.ts |
新增隐私授权、用户信息获取方法 |
assets/scripts/utils/HttpUtil.ts |
新增用户信息 API 调用方法 |
assets/prefabs/PageHome.ts |
接入隐私授权检查 |
assets/prefabs/PageWriteLevels.ts |
接入用户信息获取与上传 |
错误处理
- 隐私授权失败:提示用户"需要授权隐私才能使用完整功能",但不阻断流程
- 获取用户信息失败:提示用户"获取头像昵称失败",继续原有流程
- 服务端上传失败:本地缓存成功,服务端下次登录时同步