自定义用户数据存储

如果使用自定义用户数据存储,艾克索拉登录管理器将作为中介,所有用户身份认证数据将存储在您自己的系统中。艾克索拉登录管理器通过Webhook请求头和请求正文中的令牌传递身份认证数据。

注:
用户邮箱地址、社交媒体数据和用户属性存储在艾克索拉侧。密码不在艾克索拉侧存储。
如果使用自定义存储,可实现:
注:
如果您在本地测试集成,艾克索拉的POST请求将无法访问类似http://localhost:3000/my-webhook-endpoint的URL。Ngrok可以创建外部访问的通道,使您能够在本地接收来自艾克索拉的请求。您可以在ngrok文档中了解更多信息。

交互过程

注:
交互场景取决于选择的身份认证协议:JWTOAuth 2.0
注:
包含附加用户数据的JSON最大长度为1000个字符。
可以添加以下用户资料属性:

您还可以通过传递用户属性对象数组来更新用户属性。用户属性对象的结构如下所述。

用户属性对象的结构:

参数类型描述
attr_type
string定义用户对服务属性的访问级别:
  • client — 用户可编辑的属性。此类属性的值由用户输入或根据客户端的游戏内逻辑指定。例如:名字和角色属性、游戏难度等。(默认)
  • server — 只读属性。此类属性的值在应用程序的服务器侧输入或编辑。建议用此类属性配置不常更改的游戏角色属性或用户参数,例如获得某个奖励的机会、游戏角色关键参数、用户类别等。
key
string用于识别用户属性的属性名称。对每个用户必须唯一。
最大长度:256个字符。可使用数字、英文字母、连字符和下划线。
permission
string or null对用户属性的访问权限类型影响方法返回的属性列表:
可能的值:publicprivate(默认)。
read_only
string该属性是否不可修改。默认为false,允许更改属性值。
value
string用户属性的值。
最大长度:256个字符。

用户注册

注:
交互场景取决于选择的身份认证协议:JWTOAuth 2.0

通过用户名和密码进行认证

注:
交互场景取决于选择的身份认证协议:JWTOAuth 2.0

通过手机号进行免密认证

注:
交互场景取决于选择的身份认证协议:JWTOAuth 2.0

通过邮箱进行免密认证

注:
交互场景取决于选择的身份认证协议:JWTOAuth 2.0

通过社交网络进行身份验证

注:
交互场景取决于选择的身份认证协议:JWTOAuth 2.0

用户密码重置

  1. 客户端向艾克索拉登录管理器服务器发送Reset password POST请求。请求必须包含以下必需参数:
    • projectId查询参数 — 发布商帐户中登录管理器项目的ID。
    • username请求正文参数 — 用户名。允许长度:3至255个字符。
  2. 艾克索拉登录管理器服务器向用户发送密码重置确认邮件。
  3. 用户在邮件中确认重置密码后,将被重定向到可输入新密码的页面。
  4. 用户输入新密码。
  5. 艾克索拉登录管理器服务器向密码重置URL发送Webhook。
  6. 如果密码重置失败,您可以提供将在身份认证小组件中显示的错误消息。为此,请在用户创建请求的响应中传入包含以下详细信息的error对象:
    • code参数中,指定错误代码,例如011-002
    • description参数中,提供错误消息文本。

密码重置URL的Webhook示例:

Copy
Full screen
Small screen

http

  • http
  • curl
 1POST https://your.hostname/your_reset_uri HTTP/1.1
 2Authorization: Bearer {JWT}
 3Content-Type: application/json
 4
 5{
 6  "username": "john@gmail.com",
 7  "fields": {
 8    "password": "NewPa$$word1"
 9  }
10}
1curl --request POST \
2  --url 'https://your.hostname/your_reset_uri' \
3  --header 'authorization: bearer_JWT' \
4  --header 'content-type: application/json' \
5  --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'

令牌刷新

注:
令牌刷新仅在使用OAuth 2.0身份认证协议时可用。
  1. 当访问令牌过期时,客户端向艾克索拉登录管理器服务器发送生成JWT POST请求端点。请求正文必须包含以下参数:
    • grant_type — JWT发放类型,传递refresh_token值。
    • client_idOAuth 2.0客户端ID
    • refresh_token — 在用户授权请求响应中收到的刷新令牌。
  2. 艾克索拉登录管理器服务器处理从社交网络接收的用户数据,并向刷新令牌URL发送Webhook。响应必须采用 交互过程中描述的格式。在响应中,可以指定用户属性列表和/或任何必要的JSON对象。在响应中提供的JSON对象会记录在用户JWT的partner_data字段中。
注:
要将JSON字段映射到艾克索拉中的用户资料属性,并在您的服务器上配置按用户ID进行帐户关联,请按照说明操作。
Webhook示例:
Copy
Full screen
Small screen
1POST https://your.hostname/your_refrsh_token_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{}

包含用户属性的Webhook响应示例:

Copy
Full screen
Small screen
 1{
 2    "attributes": [
 3      {
 4        "attr_type": "server",
 5        "key": "company",
 6        "permission": "private",
 7        "value": "facebook-promo"
 8      },
 9      {
10        "attr_type": "server",
11        "key": "custom-id",
12        "permission": "private",
13        "value": 48582
14      }
15    ]
16}

包含JSON对象的Webhook响应示例:

Copy
Full screen
Small screen
 1{
 2  "user": {
 3    "player_id": "12345678",
 4    "email": "user@example.com"
 5  },
 6  "user_info": {
 7    "username": "gamer123",
 8    "user_first_name": "John",
 9    "user_last_name": "Doe",
10    "gender": "male",
11    "birthday": "1990-05-15",
12    "country": "US",
13    "language": "en"
14  },
15  "subscription_status": "active",
16  "loyalty_level": "gold"
17
18}
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。

继续阅读

上次更新时间: 2025年7月9日

发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!
无法发送您的反馈
请稍后重试或发送邮件至doc_feedback@xsolla.com与我们联系。