sud.getUserProfile
获取用户敏感信息(高安全级别 / 完整加密流程)。返回的是经当前会话 session_key 加密并签名后的密文,客户端无法解密,必须原样提交给 Game SVR 完成验签与解密。
参数
Object object
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| success | function | 否 | 获取成功回调 | |
| fail | function | 否 | 获取失败回调 | |
| complete | function | 否 | 接口结束回调,成功或失败均执行 |
回调参数
success
| 属性 | 类型 | 说明 |
|---|---|---|
| userInfo | Object | 用户基础信息,见下方 userInfo 表 |
| rawData | string | 不含敏感信息的原始数据字符串,用于计算签名 |
| encryptedData | string | 敏感信息经 AES-128-CBC 加密后生成的 Base64 密文串 |
| iv | string | AES 加密使用的 16 字节随机 IV 的 Base64 编码字符串 |
| signature | string | 用 rawData 拼接 session_key 后做 SHA1 计算得到的小写十六进制字符串 |
userInfo
| 属性 | 类型 | 说明 |
|---|---|---|
| nickname | string | 用户昵称 |
| avatar | string | 用户头像 |
| avatarUrl | string | 用户头像的远端 URL。仅本接口的 userInfo 返回该字段 |
fail
| 属性 | 类型 | 说明 |
|---|---|---|
| errCode | number | 错误码 |
| errMsg | string | 错误信息 |
complete 不携带参数,在 success 或 fail 之后调用,单次请求只执行一次。
注意事项
- 不要在客户端尝试解密。
encryptedData必须提交给 Game SVR,由 Game SVR 使用登录阶段保存的同一个session_key验签并解密。 - 提交时必须携带
rawData、encryptedData、iv、signature四个字段的原始值。Game SVR 验签时必须直接使用收到的rawData,不得解析后重新序列化,否则空格、换行或转义字符的差异会导致验签失败。 - 必须使用与本次登录同一次
auth.code2session取得的session_key,不得使用其他用户、其他游戏或历史会话的密钥。 - 算法选型、Game SVR 侧的解密顺序与异常阻断规范见用户敏感数据获取与开放数据校验与解密。
- 遵循最小化原则:只获取和保存当前业务明确需要、且用户已经授权的敏感字段。
示例代码
javascript
sud.getUserProfile({
success: (res) => {
console.log('用户昵称', res.userInfo.nickname);
console.log('远端头像 URL', res.userInfo.avatarUrl);
// 客户端只做透传,不要尝试解密
sendToGameServer({
rawData: res.rawData,
encryptedData: res.encryptedData,
iv: res.iv,
signature: res.signature,
userInfo: res.userInfo,
});
},
fail: (err) => {
console.error('获取用户敏感信息失败', err.errCode, err.errMsg);
},
complete: () => {
console.log('获取用户敏感信息调用结束');
},
});