获取用户资料
按 userID 批量查询应用用户公开资料(PublicUserItem)。
getUsersInfo() 可以按 userID 查询应用用户的公开资料,适合展示好友候选人和陌生人资料卡。
如果产品需要按昵称、手机号、组织、邮箱或其他业务字段检索用户,应先由业务后端完成搜索和权限校验,再把返回的 userID 传给 getUsersInfo()。管理员 Token 只能保存在可信后端,用户目录的管理操作也必须由后端执行。
查询公开资料
调用 getUsersInfo() 并传入要查询的 OpenIMSDK 用户 ID 数组,即可获取这些用户的账号级公开资料。调用前建议去重,并控制单次请求数量。好友备注来自好友关系,群内昵称和成员角色来自群成员资料。
Promise 成功后,data 是查询到的 PublicUserItem[]。页面常用字段如下:
| 字段 | 类型 | 说明 |
|---|---|---|
userID | string | OpenIMSDK 用户 ID。 |
nickname | string | 账号级公开昵称。 |
faceURL | string | 账号级公开头像地址。 |
ex | string | 账号级扩展字段,格式由业务约定。 |
此处的 ex 只读。浏览器不能通过 User API 修改其他账号的公开资料;当前用户自己的扩展字段通过 setSelfInfo() 更新,完整值覆盖规则见 setSelfInfo()。
const userIDList = Array.from(new Set(['user_a', 'user_b']));
try {
const response = await openimsdk.getUsersInfo(userIDList);
const users = response.data ?? [];
const usersByID = new Map(users.map((user) => [user.userID, user]));
} catch (error) {
console.error('getUsersInfo failed', {
error,
userIDList,
});
throw error;
}调用结果与资料刷新
getUsersInfo() 成功后,以响应中的 PublicUserItem[] 更新当前资料快照。打开资料卡、手动刷新、断线重连,或收到业务后端的资料变更通知时,重新调用该方法获取其他用户的最新公开资料。页面同时展示多个用户时,先收集可见项中的 userID,去重后批量查询,再按 userID 合并返回结果。
WASM SDK 没有面向任意公开用户资料的通用变更事件。CbEvents.OnSelfInfoUpdated 只携带当前登录用户的 SelfUserInfo,不能将其作为其他用户的 PublicUserItem 写入公开资料缓存。当前登录用户的读取、更新和事件同步见更新当前用户资料。
搜索添加好友
搜索并添加好友时,通常先由业务后端返回候选 userID,再由浏览器调用 getUsersInfo() 展示公开资料。用户确认目标后,再进入好友申请流程。
async function searchUsersForFriendRequest(keyword: string) {
const { userIDs } = await searchUserIDsFromYourBackend(keyword);
if (userIDs.length === 0) {
return [];
}
try {
const response = await openimsdk.getUsersInfo(userIDs);
const users = response.data ?? [];
return users.map((user) => ({
userID: user.userID,
displayName: user.nickname || user.userID,
avatar: user.faceURL,
}));
} catch (error) {
console.error('getUsersInfo failed', { error, userIDs });
throw error;
}
}如果产品只支持按用户 ID 精确搜索,可以省略后端搜索接口,直接把输入值作为 userID 调用 getUsersInfo()。模糊搜索或按敏感字段搜索时,应由后端负责鉴权、限流、脱敏和审计。
按场景选择展示数据
同一个 userID 在不同场景中可能对应不同的展示名称和关系数据。应按当前场景选择数据源:
| 场景 | 优先使用 |
|---|---|
| 应用用户搜索、陌生人资料卡 | PublicUserItem |
| 好友列表、联系人页、好友备注 | FriendUserItem |
| 群成员列表、群内昵称、群角色 | GroupMemberItem |
好友备注和群内昵称分别由好友关系与群成员资料提供。好友关系相关用法见 getFriendListPage() 和 getSpecifiedFriendsInfo();群成员相关用法见分页查询群成员。
下一步
这个页面有帮助吗?