用户账户

在服务器中,用户以个人身份的形式存在。每个用户都经过注册,设有个人资料,可供其他玩家查找和添加好友或加入群组聊天

用户可以拥有记录,将公开信息共享给其他用户,并通过各种社交供应商进行身份验证。

系统所有者身份使用带有空UUID (00000000-0000-0000-0000-000000000000).
的用户账户表示

获取账户 #

用户有会话时,您可以检索用户账户。个人资料包含各种信息,其中包括各种有“链接”关系的社交供应商。

钱包、设备ID和自定义ID是私密信息,但部分资料对其他用户是可见的。

Public FieldDescription
user.id用户的唯一标识符。
user.username用户的唯一昵称。
user.display_name显示的用户名称(默认为空)。
user.avatar_url包含用户个人资料图片的网址(默认为空)。
user.lang用户的首选语言设置(默认为“英文”)。
user.location用户的位置(默认为空)。
user.timezone用户的时区(默认为空)。
user.metadata用户可添加自定义信息的插槽 - 仅可从客户端读取。
user.edge_count用户的好友数量。
user.facebook_id用户关联的 Facebook 标识符。
user.google_id用户关联的 Google 标识符。
user.gamecenter_id用户关联的 GameCenter 标识符。
user.steam_id用户关联的 Steam 标识符。
user.create_time创建用户时的时间戳。
user.update_time用户上次更新时的时间戳。
user.online显示用户当前是否在线的布尔值。
Private FieldDescription
email用户关联的电子邮箱。
devices用户关联的设备 ID 列表。
custom_id用户关联的自定义标识符。
wallet用户钱包 - 仅可从客户端读取。
verify_time用户验证时间戳(目前仅用于 Facebook)。

用户元数据 #

您可以在user.metadata中为用户存储其他字段,这可以帮助您与其他用户共享您想要公开的数据。我们建议使用用户元数据来存储显示给其他用户的常见字段。例如,必要时可以使用用户元数据让用户显示个人详情,或者其角色名称、等级和游戏统计信息。

您可以将所有其他信息存储为拥有公开阅读权限,以便于其他用户查找。

每位用户的元数据大小限制在16KB。仅可以通过脚本运行设置,类似于wallet

以下示例展示了使用用户元数据存储VIP状态,然后将VIP状态用作参加锦标赛前的钩子,这个钩子仅允许VIP成员加入锦标赛。

虚拟钱包 #

Nakama有虚拟钱包和交易分类账的概念。Nakama允许开发人员创建、更新和列出对用户钱包作出的变更。这个操作有事务担保,并且仅可通过脚本运行来实现。

通过服务器端代码,可以更新用户的钱包。

钱包属于用户隐私,对其他用户不可见。您可以通过获取账户操作获取用户的钱包信息。

在线指示器 #

Nakama可通过两种方式汇报用户在线指示器:

  1. 获取用户信息。这将为您提供用户在线指示器的快速快照视图,但无法可靠地检测用户显示的在线状态。
  2. 发布和订阅用户显示的在线状态更新。用户的在线状态发生变化时,将会向您更新(同时还有自定义消息)。

获取用户 #

您可以通过用户的ID或手柄获取一个或多个用户。这有助于向其他用户显示公开的个人资料。

您也可以在服务器端代码中获取一个或多个用户。

更新账户 #

用户注册时,大部分个人资料采用默认值设置。用户可以更新自己的个人资料以更改字段,但无法修改其他用户的个人资料。

通过服务器端代码,可以更新任意用户的个人资料。