docs: 添加微信隐私授权与用户信息功能设计文档
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# 微信隐私授权与用户信息功能设计
|
||||
|
||||
## 概述
|
||||
|
||||
接入微信小游戏隐私授权 API,实现:
|
||||
1. 进入 PageHome 时检查用户是否已授权隐私,未授权则引导授权
|
||||
2. PageWriteLevels 点击分享按钮时获取用户头像、昵称并上传服务端
|
||||
|
||||
## 功能设计
|
||||
|
||||
### 1. 隐私授权检查
|
||||
|
||||
**触发时机**: PageHome `onViewLoad`
|
||||
|
||||
**实现逻辑**:
|
||||
```typescript
|
||||
// 检查用户是否已授权隐私
|
||||
wx.getPrivacySetting({
|
||||
success: (res) => {
|
||||
if (!res.needAuthorization) {
|
||||
// 已授权,继续正常流程
|
||||
return;
|
||||
}
|
||||
// 未授权,调用引导授权
|
||||
wx.requirePrivacyAuthorize({
|
||||
success: () => {
|
||||
console.log('用户已授权隐私');
|
||||
},
|
||||
fail: () => {
|
||||
console.log('用户拒绝授权');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### 2. 用户头像昵称获取
|
||||
|
||||
**触发时机**: PageWriteLevels 点击分享按钮 (`_onCompleteClick`)
|
||||
|
||||
**实现逻辑**:
|
||||
1. 调用 `wx.getUserProfile` 获取用户头像和昵称
|
||||
2. 上传到服务端
|
||||
3. 本地 StorageManager 缓存
|
||||
|
||||
```typescript
|
||||
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` | 接入用户信息获取与上传 |
|
||||
|
||||
## 错误处理
|
||||
|
||||
- 隐私授权失败:提示用户"需要授权隐私才能使用完整功能",但不阻断流程
|
||||
- 获取用户信息失败:提示用户"获取头像昵称失败",继续原有流程
|
||||
- 服务端上传失败:本地缓存成功,服务端下次登录时同步
|
||||
Reference in New Issue
Block a user