自定义存储

如果使用自定义存储,可实现以下功能:

交互过程

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

  1. 客户端向艾克索拉登录管理器服务器发送请求。请求格式见JWTPassword端点的说明。
  2. 艾克索拉登录管理器服务器向您的服务器发送请求。请按照说明验证请求。
  3. 艾克索拉登录管理器服务器处理您服务器的响应并将结果返回给客户端。
  4. 客户端处理响应。

用户注册

  1. 客户端向艾克索拉登录管理器服务器发送Register new user请求。
  2. 艾克索拉登录管理器服务器发送请求至新用户URL。响应必须为此说明中所述的格式。

请求示例:

Copy
Full screen
Small screen
http
  • http
  • curl
POST https://your.hostname/your_registration_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json

{
  "email": "john@gmail.com",
  "password": "123456"
}
curl --request POST \
  --url 'https://your.hostname/your_registration_uri' \
  --header 'authorization: bearer_JWT' \
  --header 'content-type: application/json' \
  --data '{"email":"john@gmail.com","password":"123456"}'

  1. 用户数据写入艾克索拉数据库,并且email标记为未确认。用户将收到一封帐户验证邮件。
  2. 如果集成了登录管理器小组件,则用户将重定向到包含以下消息的页面:请按照发送至{email}的说明验证您的帐户

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

  1. 客户端向艾克索拉登录管理器服务器发送Auth by username and password请求。
  2. 艾克索拉登录管理器服务器发送请求至用户认证URL。响应必须为此说明中所述的格式。

请求示例:

Copy
Full screen
Small screen
http
  • http
  • curl
POST https://your.hostname/your_authentication_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json

{
  "email": "john@gmail.com",
  "password": "123456"
}
curl --request POST \
  --url 'https://your.hostname/your_authentication_uri' \
  --header 'authorization: bearer_JWT' \
  --header 'content-type: application/json' \
  --data '{"email":"john@gmail.com","password":"123456"}'

  1. 艾克索拉登录管理器服务器生成一个用户JWT。
  2. 用户重定向到包含一个token查询参数的login_urltoken参数包含用户JWT。

Note
如果艾克索拉数据库中未写入该用户数据,则创建一个新用户。

通过手机号进行免密认证

  1. 客户端打开一个认证表单让用户输入手机号。
  2. 用户输入手机号。
  3. 客户端向艾克索拉登录管理器服务器发送Start auth by phone number请求。
  4. 客户端显示让用户填写验证码的字段。
  5. 用户输入收到的验证码。
  6. 客户端向艾克索拉登录管理器发送Complete auth by phone number请求。
  7. 如果为首次用户授权,艾克索拉登录管理器服务器向通过手机进行无密码登录URL发送一个请求。响应必须符合此说明中所述的格式。

请求示例:

Copy
Full screen
Small screen
http
  • http
  • curl
POST https://your.hostname/your_phone_authentication_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json

{
  "login": "+12025550140",
  "type": "phone"
}
curl --request POST \
  --url 'https://your.hostname/your_phone_authentication_uri' \
  --header 'authorization: bearer_JWT' \
  --header 'content-type: application/json' \
  --data '{"login":"+12025550140","type":"phone"}'

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

要在通过社交网络进行身份认证时获取用户数据,请指定社交网络认证Webhook URL。包含从社交网络所获数据的请求将发送至该地址。请将您的社交网络认证Webhook URL发送给帐户经理以使用此功能。

认证流程:

  1. 客户端向艾克索拉登录管理器服务器发送Auth via social network请求。
  2. 用户登录到某个社交网络。
  3. 艾克索拉登录管理器服务器处理从该社交网络收到的用户数据并向社交网络认证Webhook URL发送一个请求。响应必须为此说明中所述的格式。

请求在临时令牌的Authorization: Bearer <JWT>头中包含数据。请求中传入的用户JWT包含如下数据:

声明类型描述
expUnix TimestampJWT的过期日期和时间。JWT寿命为7分钟。 必需
iatUnix Timestamp使用该JWT时的日期和时间。 必需
issstring签名JWT的服务,例如https://login.xsolla.com必需
request_typestring常量:gateway_request必需
xsolla_login_project_idstring (UUID)您发布商帐户的登录管理器项目ID。 必需
emailstring用户邮箱地址。
substring (UUID)写入在艾克索拉登录管理器服务器侧的用户ID。 必需
usernamestring用户名。
providerstring认证使用的社交网络的名称。 必需
idstring社交网络中的用户ID。 必需

令牌负载示例:

Copy
Full screen
Small screen
{
  "exp": 1573635020,
  "iat": 1573634600,
  "iss": "https://login.xsolla.com",
  "request_type": "gateway_request",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000",
  "sub": "00000000-0000-0000-0000-000000000000",
  "email": "example@test.com",
  "username": "Smith707",
  "provider": "google",
  "id": "123",
}

请求示例:

Copy
Full screen
Small screen
http
  • http
  • curl
POST https://your.hostname/your_social_authentication_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json

{}
curl --request POST \
  --url 'https://your.hostname/your_social_authentication_uri' \
  --header 'authorization: bearer_JWT' \
  --header 'content-type: application/json'

用户密码重置

  1. 客户端向艾克索拉登录管理器服务器发送Reset password请求。
  2. 艾克索拉登录管理器服务器向用户发送一封密码重置确认邮件。
  3. 用户在邮件中确认密码重置后,将被重定向到输入新密码的页面。
  4. 用户输入新的密码。
  5. 艾克索拉登录管理器服务器向密码重置URL发送请求。响应必须为此说明中所述的格式。

请求示例:

Copy
Full screen
Small screen
http
  • http
  • curl
POST https://your.hostname/your_reset_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json

{
  "username": "john@gmail.com",
  "fields": {
    "password": "NewPa$$word1"
  }
}
curl --request POST \
  --url 'https://your.hostname/your_reset_uri' \
  --header 'authorization: bearer_JWT' \
  --header 'content-type: application/json' \
  --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'

本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
为此页面评分
为此页面评分
我们还有其他可改进之处吗?

不想回答

感谢您的反馈!

继续阅读

上次更新时间: 2021年8月16日

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

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!