浏览器游戏中的延迟注册

运行机制

用户可在未注册的情况下在浏览器中开始游戏。经过一段时间后,用户将被要求进行注册且其游戏进度将保存。注册等待时间需在游戏侧实现。

用户和游戏之间的交互过程如下:

  1. 未授权的用户开始游戏。
  2. 游戏将用户与会话信息关联。
  3. 经过一段时间后,游戏要求用户进行注册以继续游戏。
  4. 游戏将包含会话信息的注册请求发送至艾克索拉登录管理器服务器。
  5. 艾克索拉登录管理器服务器注册该用户。会话信息将作为注册结果传入用户JWT
  6. 游戏将进度发送给注册的用户。
  7. 用户以已授权身份继续游戏。

注:
会话标识符或包含用户进度信息的JSON字符串作为用户会话信息传递。

适用对象

集成了登录管理器并拥有浏览器游戏的合作伙伴。

如何获取

要在注册后保存用户的游戏进度:

  1. 注册时传入用户的会话信息
  2. 将游戏进度发送给用户

传入用户的会话信息

传递用户会话信息的方法取决于登录管理器的集成方式:

通过Login API集成

payload参数传入Register new user请求。将用户会话信息指定为该参数的值。

请求示例(用户会话的标识符):

Copy
Full screen
Small screen

http

  • http
  • curl
POST https://login.xsolla.com/api/user?login_url=https://example.com&projectId=00000000-0000-0000-0000-000000000000&payload=my_session_123 HTTP/1.1
Content-Type: application/json

{
  "username": "John Smith",
  "password": "123456",
  "email": "john-email@email.com"
}
curl --request POST \
  --url 'https://login.xsolla.com/api/user?login_url=https%3A%2F%2Fexample.com&projectId=00000000-0000-0000-0000-000000000000&payload=my_session_123' \
  --header 'content-type: application/json' \
  --data '{"username":"John Smith","password":"123456","email":"john-email@email.com"}'

请求示例(包含用户进度信息的JSON字符串):

Copy
Full screen
Small screen

http

  • http
  • curl
POST https://login.xsolla.com/api/user?login_url=https://example.com&projectId=00000000-0000-0000-0000-000000000000&payload={"coins":120,"lvl":2} HTTP/1.1
Content-Type: application/json

{
  "username": "John Smith",
  "password": "123456",
  "email": "john-email@email.com"
}
curl --request POST \
  --url 'https://login.xsolla.com/api/user?login_url=https%3A%2F%2Fexample.com&projectId=00000000-0000-0000-0000-000000000000&payload=%7B%22coins%22%3A120%2C%22lvl%22%3A2%7D' \
  --header 'content-type: application/json' \
  --data '{"username":"John Smith","password":"123456","email":"john-email@email.com"}'

通过登录管理器小组件集成

小组件初始化代码中添加payload参数。将用户会话信息指定为该参数的值。

小组件初始化代码示例(用户会话的标识符):

Copy
Full screen
Small screen
<script>
const xl = new XsollaLogin.Widget({
  projectId: '00000000-0000-0000-0000-000000000000',
  preferredLocale: 'en_US',
  callbackUrl: 'https://example.com',
  payload: 'my_session_123'
});
</script>

小组件初始化代码示例(包含用户进度信息的JSON字符串):

Copy
Full screen
Small screen
<script>
const xl = new XsollaLogin.Widget({
  projectId: '00000000-0000-0000-0000-000000000000',
  preferredLocale: 'en_US',
  callbackUrl: 'https://example.com',
  payload: '{"coins":120,"lvl":2}'
});
</script>

将游戏进度发送给用户

注册后,用户会话信息将传入用户JWTpayload声明中。使用该信息发送会话过程中收到的进度。可在用户JWTsub声明中找到注册用户的标识符。

JWT payload示例(用户会话的标识符):

Copy
Full screen
Small screen
{
  "email": "john-email@email.com",
  "exp": 1597904900,
  "iat": 1597818500,
  "is_master": true,
  "iss": "https://login.xsolla.com",
  "payload": "my_session_123",
  "promo_email_agreement": true,
  "publisher_id": 0,
  "sub": "00000000-0000-0000-0000-000000000000",
  "type": "xsolla_login",
  "username": "John Smith",
  "xsolla_login_access_key": "422nH1zNMIVKCesi7r4YdQXQY-jgbf2CIcvGdCREDIA",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}

JWT payload示例(包含用户进度信息的JSON字符串):

Copy
Full screen
Small screen
{
  "email": "john-email@email.com",
  "exp": 1597904900,
  "iat": 1597818500,
  "is_master": true,
  "iss": "https://login.xsolla.com",
  "payload": "{\"coins\":120,\"lvl\":2}",
  "promo_email_agreement": true,
  "publisher_id": 0,
  "sub": "00000000-0000-0000-0000-000000000000",
  "type": "xsolla_login",
  "username": "John Smith",
  "xsolla_login_access_key": "422nH1zNMIVKCesi7r4YdQXQY-jgbf2CIcvGdCREDIA",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
上次更新时间: 2024年7月31日

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

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