浏览 SDKs · WASM
SDKsWASM

获取用户资料

按 userID 批量查询应用用户公开资料(PublicUserItem)。

复制

getUsersInfo() 可以按 userID 查询应用用户的公开资料,适合展示好友候选人和陌生人资料卡。

如果产品需要按昵称、手机号、组织、邮箱或其他业务字段检索用户,应先由业务后端完成搜索和权限校验,再把返回的 userID 传给 getUsersInfo()。管理员 Token 只能保存在可信后端,用户目录的管理操作也必须由后端执行。

查询公开资料

调用 getUsersInfo() 并传入要查询的 OpenIMSDK 用户 ID 数组,即可获取这些用户的账号级公开资料。调用前建议去重,并控制单次请求数量。好友备注来自好友关系,群内昵称和成员角色来自群成员资料。

Promise 成功后,data 是查询到的 PublicUserItem[]。页面常用字段如下:

字段类型说明
userIDstringOpenIMSDK 用户 ID。
nicknamestring账号级公开昵称。
faceURLstring账号级公开头像地址。
exstring账号级扩展字段,格式由业务约定。

此处的 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();群成员相关用法见分页查询群成员

下一步