# 微信隐私授权与用户信息功能设计 ## 概述 接入微信小游戏隐私授权 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` | 接入用户信息获取与上传 | ## 错误处理 - 隐私授权失败:提示用户"需要授权隐私才能使用完整功能",但不阻断流程 - 获取用户信息失败:提示用户"获取头像昵称失败",继续原有流程 - 服务端上传失败:本地缓存成功,服务端下次登录时同步