浏览器游戏中的延迟注册
运行机制
用户可在未注册的情况下在浏览器中开始游戏。经过一段时间后,用户将被要求进行注册且其游戏进度将保存。注册等待时间需在游戏侧实现。
用户和游戏之间的交互过程如下:
- 未授权的用户开始游戏。
- 游戏将用户与会话信息关联。
- 经过一段时间后,游戏要求用户进行注册以继续游戏。
- 游戏将包含会话信息的注册请求发送至艾克索拉登录管理器服务器。
- 艾克索拉登录管理器服务器注册该用户。会话信息将作为注册结果传入用户JWT。
- 游戏将进度发送给注册的用户。
- 用户以已授权身份继续游戏。
注:
会话标识符或包含用户进度信息的JSON字符串作为用户会话信息传递。
适用对象
集成了登录管理器并拥有浏览器游戏的合作伙伴。
如何获取
要在注册后保存用户的游戏进度:
传入用户的会话信息
传递用户会话信息的方法取决于登录管理器的集成方式:通过Login API集成
将payload
参数传入
请求示例(用户会话的标识符):
Copy
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
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
- html
<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
- html
<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>
将游戏进度发送给用户
注册后,用户会话信息将传入用户JWT的payload
声明中。使用该信息发送会话过程中收到的进度。可在用户JWT的sub
声明中找到注册用户的标识符。
JWT
Copy
- json
{
"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
Copy
- json
{
"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"
}
本文对您的有帮助吗?
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。