PlayFab

运行机制

您可以使用PlayFab存储以下用户数据:

  • 用户名
  • 用户邮箱地址
  • 用户密码
  • 更详细注册表单的字段(如事先进行了设置)
这些用户数据也会存储在艾克索拉侧,但密码仅由PlayFab验证。

如果使用PlayFab存储,可实现以下功能:

您可以使用艾克索拉登录管理器小组件或您的应用程序作为客户端。客户端与艾克索拉登录管理器服务器之间的交互流程如下:

  1. 客户端向艾克索拉登录管理器服务器发送请求。请求格式见JWTOAuth 2.0General方法组的说明。
  2. 艾克索拉登录管理器服务器向PlayFab发送请求。
  3. 艾克索拉登录管理器服务器处理PlayFab的响应并将结果返回给客户端。
  4. 客户端处理响应。

PlayFab中的用户注册

用户注册遵循此流程。您可以设置发送给用户的帐户确认邮件来结束注册流程。

用户注册流程

  1. 客户端向艾克索拉登录管理器服务器发送Register a New User请求。
  2. 艾克索拉登录管理器服务器发送一个注册请求。
  3. 用户数据写入艾克索拉数据库中。
  4. 艾克索拉登录管理器服务器发送请求更改PlayFab中的数据。
  5. 如果设置了帐户确认:
    1. 如果使用API方法集成该解决方案,则注册结束。
    2. 如果使用登录管理器小组件集成该解决方案,则用户被重定向到包含以下消息的页面:帐户确认邮件已发送至{email address}
    如果未设置帐户确认,则用户在注册后自动登录。

PlayFab中的用户帐户确认

要设置帐户确认邮件发送,请完成下列步骤:

  1. 按照说明在PlayFab中设置您的项目。
  2. 确保已完成Requirements模块中的Create an email templateCreate a rule to send an email when a contact email is updated步骤。
  3. 联系您的帐户经理。

Note: 对于使用PlayFab的项目,已注册用户可以在未确认邮箱地址的情况下登录。

通过用户邮箱地址和密码进行认证

有两种通过用户邮箱地址和密码进行认证的方式──基于JWT和基于OAuth 2.0协议认证。

认证(JWT)

  1. 客户端向艾克索拉登录管理器服务器发送Auth by Username and Password请求。
  2. 艾克索拉登录管理器服务器将该认证请求发送给PlayFab。
  3. 艾克索拉登录管理器服务器生成用户JWT,其中
    • PlayFab请求响应中的PlayFabId值写入external_account_id声明。
    • PlayFab请求响应中的SessionTicket写入session_ticket声明。
  4. 用户被重定向至包含一个查询参数tokenlogin_url。用户JWT写入token参数中。

认证(OAuth 2.0)

  1. 客户端向艾克索拉登录管理器服务器发送包含redirect_uri参数的Auth by Username and Password请求。
  2. 艾克索拉登录管理器服务器将该认证请求发送给PlayFab。
  3. 艾克索拉登录管理器服务器返回在查询参数中包含codelogin_url和所传的redirect_uri
  4. 用户被重定向至包含查询参数coderedirect_uri
  5. 客户端向艾克索拉登录管理器服务器发送Generate JWT请求,用收到的code交换用户JWT。
  6. 艾克索拉登录管理器服务器生成用户JWT,其中:
    • PlayFab请求响应中的PlayFabId值写入external_account_id声明。
    • PlayFab请求响应中的SessionTicket写入session_ticket声明(如果Auth by Username and Password请求中传入了scope=playfab)。

如果艾克索拉存储中没有该用户数据,则:

  1. 在其中写入用户数据。
  2. 艾克索拉登录管理器发送请求更改PlayFab中的数据。

通过Twitch进行身份验证

需在PlayFab中设置社交网络以通过Twitch认证用户。有两种通过Twitch进行认证的方式──基于JWT和基于OAuth 2.0协议的认证。

认证(JWT)

  1. 客户端向艾克索拉登录管理器服务器发送Auth via Social Network请求。
  2. 艾克索拉登录管理器服务器将该认证请求发送给PlayFab。
  3. 用户数据写入艾克索拉数据库中。
  4. 艾克索拉登录管理器服务器生成用户JWT,其中
    • PlayFab请求响应中的PlayFabId值写入external_account_id声明。
    • PlayFab请求响应中的SessionTicket写入session_ticket声明。
  5. 用户被重定向至包含一个查询参数tokenlogin_url。用户JWT写入token参数中。

认证(OAuth 2.0)

  1. 客户端向艾克索拉登录管理器服务器发送包含redirect_uri参数的Auth via Social Network请求。
  2. 艾克索拉登录管理器服务器将该认证请求发送给PlayFab。
  3. 用户数据写入艾克索拉数据库中。
  4. 艾克索拉登录管理器服务器发送请求更改PlayFab中的数据。
  5. 用户被重定向至包含查询参数coderedirect_uri
  6. 客户端向艾克索拉登录管理器服务器发送Generate JWT请求,用收到的code交换用户JWT。
  7. 艾克索拉登录管理器服务器生成用户JWT,其中:
    • PlayFab请求响应中的PlayFabId值写入external_account_id声明。
    • PlayFab请求响应中的SessionTicket写入session_ticket声明(如果Twitch认证请求中传入了scope=playfab)。

Info: 如果PlayFab中的用户记录关联了该Twitch帐户,则视作同一个帐户。

用户密码重置

用户密码重置流程如下:

  1. 客户端将向艾克索拉登录管理器服务器发送Reset Password请求。
  2. 艾克索拉登录管理器服务器将该密码重置请求发送给PlayFab。
  3. 新密码写入PlayFab中。

拦截用户

您可以通过发布商帐户 > 登录管理器项目 > 用户拦截用户。拦截的用户无法进行认证。拦截记录仅保存在艾克索拉数据库中。

使用者

集成了登录管理器并在PlayFab中拥有项目的合作伙伴。

如何获取

要连接PlayFab存储:

  1. 前往发布商帐户 > 登录管理器项目 > 常规设置
  2. 用户数据存储部分选择PlayFab
  3. 输入PlayFab帐户的Title ID

Info: 可使用向用户发送其他邮件的PlayFab方法。

要在Playfab中设置Twitch:

  1. 创建Twitch帐户并获取Twitch Client ID
  2. 前往登录管理器项目 > 社交网络连接
  3. Application ID字段输入Twitch Client ID来连接Twitch.tv。
  4. 按照说明在PlayFab帐户中设置Twitch。
  5. 如果是通过API方法集成艾克索拉登录管理器,则:
    1. 获取通过Twitch进行认证的链接。使用社交网络认证方法(JWTOAuth 2.0)。
    2. 在UI中显示收到的链接。