Files
mp-xieyingeng/docs/superpowers/specs/2026-04-07-wechat-privacy-userinfo-design.md
2026-04-07 21:40:59 +08:00

2.6 KiB
Raw Permalink Blame History

微信隐私授权与用户信息功能设计

概述

接入微信小游戏隐私授权 API实现

  1. 进入 PageHome 时检查用户是否已授权隐私,未授权则引导授权
  2. PageWriteLevels 点击分享按钮时获取用户头像、昵称并上传服务端

功能设计

1. 隐私授权检查

触发时机: PageHome onViewLoad

实现逻辑:

// 检查用户是否已授权隐私
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 缓存
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 接入用户信息获取与上传

错误处理

  • 隐私授权失败:提示用户"需要授权隐私才能使用完整功能",但不阻断流程
  • 获取用户信息失败:提示用户"获取头像昵称失败",继续原有流程
  • 服务端上传失败:本地缓存成功,服务端下次登录时同步