身份验证

服务器具有内置身份验证,因此客户端只有在拥有服务器密钥的情况下才能发送请求和进行连接。默认服务器密钥为defaultkey但有必要设置一个唯一值。这个值应该嵌入到客户端代码中。

身份验证成功后,客户端可以作为用户创建会话。

每个用户账户都是由用于身份验证的一个选项创建的。因为可以通过这些选项访问用户账户,我们将这些选项分别称为“链接”。您可以向每个帐户添加多个链接,这有助于用户在不同的设备上以多种方式登录。

验证身份 #

与服务器互动之前,您必须通过在系统中进行身份验证获取会话令牌。身份验证系统非常灵活。您可以使用电子邮箱注册用户,链接他们的Facebook帐户,并使用它在另一台设备上登录。

如果用于身份验证的标识符先前并不存在于系统中,则系统会默认自动创建用户。设备部分介绍了这种模式。

请在相关指南中查看关于在各个客户端处理注册和登录的最佳方式的完整示例。

设备 #

设备标识符可以用于在不引人注目的情况下在服务器中注册用户。这提供了流畅的用户体验,但可能不可靠,因为设备标识符有时会在设备更新中发生改变。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

设备标识符必须包含带破折号的字母数字字符,长度在10至128字节之间。

在游戏中,使用GoogleGame Center以不引人注意的方式注册用户通常是更好的选择。

电子邮箱 #

可以使用电子邮箱和密码注册用户。在存储到数据库服务器之前对密码进行了哈希处理,管理员无法读取或“恢复”密码。这保护了用户的隐私。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

电子邮件地址必须是RFC-5322所定义的有效地址,密码必须至少包含8个字符。

社交供应商 #

服务器支持通过许多不同的社交供应商注册和登录。所有供应商均从社交服务中提取用户帐户以用于设置用户。在某些情况下,也会将用户的好友提取并添加到好友列表中。

要使用任意供应商进行用户注册或登录,都必须从相应的社交服务中获取OAuth或访问令牌。

Apple #

请按照Apple开发人员文档将使用Apple注册集成到您的应用程序中。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

Facebook #

要使用Facebook,您需要将Facebook SDK添加到您的项目中,您可以 在线下载。遵循关于如何集成代码的指南。对于移动项目,您还需要完成关于如何配置iOS和Android的说明。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

进行身份验证时,您可以选择将Facebook好友导入Nakama好友图谱中。为此,设置import为true。

即时Facebook #

确保您已经为Nakama配置了FB即时应用程序密钥,并使用FBInstant.initializeAsync()初始化了Facebook即时游戏SDK。

Google #

与通过Facebook注册和登录类似,您应该使用Google的一个客户端SDK。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

Game Center #

Apple设备具有内置的身份验证,可以通过Game Center在不进行用户互动的情况下完成身份验证。由于Apple服务的运作方式,注册或登录过程有些复杂。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

Steam #

Steam要求您在注册用户之前配置服务器。查看配置部分,了解您需要对服务器进行哪些设置。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

进行身份验证时,您可以选择将Steam好友导入Nakama好友图谱中。为此,设置import为true。

自定义 #

可通过与使用设备标识符类似的方式使用自定义标识符登录或注册用户。如果您要使用外部或自定义用户标识服务,应使用此选项。例如,EA的Origin服务处理拥有自己的用户ID的账户。

自定义标识符必须包含带破折号的字母数字字符,长度在6至128字节之间。

创建帐户时,您可选择自定义用户名。为此,请设置username为一个自定义名称。如果您仅想验证身份而不会暗中创建用户账户,请设置create为false。

会话 #

身份验证调用成功时,服务器会使用会话对象进行响应。会话对象至少包含以下内容:

  • 用户ID
  • 用户名
  • 缓存在令牌中的一组变量
  • 创建时间
  • 到期时间

客户端获得会话对象后,您就可以利用Nakama的实时特性,例如多人游戏, 通知状态更新传递流数据实时聊天

链接或取消链接 #

您可以将一个或多个其他登录选项链接到当前用户。这样就可以轻松支持每个用户的多次登录,并在不同的设备上轻松识别一个用户。

您只能链接尚未与其他用户帐户一起使用的设备ID、自定义ID和社交供应商ID。

您可以为当前用户的任何链接登录选项取消链接。

您可以链接或取消链接许多不同的账户选项。

链接描述
AppleApple账户。
自定义来自其他标识服务的自定义标识符。
设备用户拥有的设备的唯一标识符。
电子邮箱用户设置的电子邮箱和密码。
FacebookFacebook社交账户。您可以选择在链接时导入Facebook好友。
Game Center来自Apple Game Center服务的账户。
GoogleGoogle账户。
Steam来自Steam网络的账户。