设置用户认证
身份认证可以让用户在网页商城中购买商品及在目录中查看专属优惠。
含身份认证的网页商城的主要功能:
- 在网页商城中提供多种授权方式。
- 为授权用户设置个性化店面和促销码。
- 符合个人数据保护与处理的区域法律法规。
- 限流及DDoS保护。
您可以选择以下认证方式之一:
- 用户ID认证:
- 简化网页商城与游戏的集成。
- 用户认证小组件不要求注册或输入密码。用户需输入游戏中的用户ID或使用登录游戏时使用的同一社交网络帐户。
- 用户ID加深度链接身份认证:
- 深度链接可用作用户ID登录时的额外身份认证方式。
- 用户ID加深度链接身份认证小组件无需注册或输入密码。用户只需输入游戏中的用户ID,或通过深度链接使用游戏进行登录即可。
- 深度链接身份认证:
- 将深度链接作为主要登录方式时,用户可以保存支付方式,这是通过用户ID身份认证所无法实现的功能。
- 通过艾克索拉登录管理器进行认证:
- 提供丰富授权方式:社交网络、一次性验证码或链接、用户名和密码。
- 允许自定义艾克索拉登录管理器小组件。
- 可以在认证时加入年龄限制。
用户流程
- 用户使用配置的用户ID认证前往网页商城。
- 用户通过以下方式之一授权进入网页商城:
- 用户在快速登录区块输入其ID并点击登录按钮。
- 用户点击所选商品的购买按钮或页首栏中的登录按钮:
- 一个用于输入用户ID或使用社交网络登录的模态窗口将打开。
- 用户输入其ID并点击继续,或点击社交网络图标选择一个社交网络并在社交网络页面上完成身份认证。
- 系统检查用户在游戏中是否存在。如游戏中存在该ID或该社交帐户的用户,用户即在网页商城中完成授权,否则将显示错误消息。
如何获取
- 在您的应用程序侧,实现对用户验证Webhook的处理。
收到Webhook后,应用程序应执行以下操作:
- 根据Webhook中传入的ID搜索用户。
- 根据结果发送以下状态代码之一:
- 如找到了该用户,发送200 HTTP代码和Webhook回应
- 如未找到该用户,发送404 HTTP代码
- 发送用户属性。
- 在发布商帐户中打开您的项目。
- 在侧边栏中单击建站器。
- 单击打开建站器。
- 前往登录设置区块。
- 选择用户ID选项。
- 在下拉列表中,选择新建登录管理器。
- 输入接收Webhook的URL。
https://
开头。使用http://
会导致错误。- 设置通过应用程序连接的社交网络进行认证(可选):
- 在发布商帐户中打开您的项目,然后前往登录管理器部分。
- 在网站栏中单击配置。
- 前往身份认证区块,然后选择社交网络登录。
- 要设置社交网络,请前往社交网络版块,单击标题右侧的⚙图标,然后选择连接。
深度链接是一种特殊的URL,不仅可以将用户跳转至应用程序或网站的主页面,还可以直接将其跳转至特定的区段、页面或操作。
深度链接可用作用户ID登录时的额外身份认证方式。如果游戏安装在用户移动设备上,将通过深度链接跳转到游戏获取一个授权令牌。
用户流程
在移动应用中
- 网页商城中的未授权用户点击登录按钮或购买按钮。随后将打开一个用于输入用户ID或通过移动游戏登录的模态窗口。
- 用户点击通过手机游戏登录按钮。
- 用户将被跳转至游戏,然后自动以授权用户身份返回网页商城。
在桌面版本中
- 网页商城中的未授权用户点击登录按钮或购买按钮。随后将打开一个用于输入用户ID或使用二维码登录游戏移动版本的模态窗口。
- 用户使用移动设备扫描二维码。
- 网页商城在用户的移动设备上打开。
- 用户自动跳转至游戏,然后以已认证用户身份返回网页商城。
服务交互过程
如何设置
游戏侧
- 在游戏的移动应用设置中,注册一个URL机制来通过深度链接打开游戏:
- Android应用 —
AndroidManifest.xml
文件中 - iOS应用 —
Info.plist
文件中
- Android应用 —
- 注册机制后,用户通过游戏认证进入网页商城时,游戏应在指定地址打开。
- 游戏注册URL机制示例:
gamename
— 将在移动设备上打开用于用户身份认证的游戏名称。authorize
— 游戏打开后要执行的操作名称示例。请使用与应用程序操作系统中的操作相匹配的操作名称。operationPayload=<VALUE>
— 包含身份认证过程中用于生成令牌的信息的附加参数。
gamename://authorize?operationPayload=<VALUE>
,其中:- 示例:
- xml
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>gamename</string>
</array>
</dict>
</array>

- xml
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="gamename" android:host="authorize" />
</intent-filter>
- 实现使用游戏中的用户ID生成JWT格式的授权令牌。
参数 | 类型 | 描述 |
---|---|---|
loginId | string | 发布商帐户中授权方式的ID。必需。 |
settings.projectId | string | 发布商帐户中的项目ID,可在浏览器地址栏中的项目名称旁边找到。该URL的格式如下:https://publisher.xsolla.com/<merchantId>/projects/<projectId> 。必需。 |
settings.merchantId | string | 发布商帐户中的商户ID,可在公司设置 > 公司部分或在发布商帐户任意页面的浏览器地址栏的URL中找到。该URL的格式如下:https://publisher.xsolla.com/<merchantId>/ 。必需。 |
user.id | string | 游戏中的用户ID。必需。 |
user.country | string | 两个大写字母的国家/地区代码(遵循ISO 3166-1 alpha-2标准)。有关艾克索拉支持的国家/地区以及确定国家/地区的流程的详细信息,请查看文档。必需。 示例:US |
operationPayload | string | 包含身份认证过程中用于生成令牌的信息的附加参数。必需。 |
- 使用curl调用用户令牌生成API方法的示例:
- curl
curl -X 'POST' \
'https://sb-user-id-service.xsolla.com/api/v1/user-id/token' \
-H 'accept: /' \
-H 'Content-Type: application/json' \
-d '{
"loginId": "000001aa-001a-0ab0-00001-01a01a01a01a",
"settings": {
"projectId": 123456,
"merchantId": 123456
},
"user": {
"id": "123",
"country": "US"
}
"operationPayload": "kosarb2NyrtIWaegJAH1f6P7XrBYPXYDya5coc_ZzcfiS_5o4QTUAL-CcGRC_Kv4CAtg"
}'
- 您将获得类似于
{token="JWT_TOKEN"}
的响应。- 添加一个包含授权成功通知(可选)。
- 实现使用获得的用户令牌在浏览器中打开网页商城。
- 在浏览器中为已授权用户打开网页商城的URL示例:
https://example.com/?token={token}
(使用自定义域名时)https://example.xsolla.site/?token={token}
(使用艾克索拉域名时)
- 其中
{token}
为用户的授权令牌。在建站器中
- 在发布商帐户中打开您的项目,前往建站器。
- 在包含通过用户ID进行认证的网页商城网站所在卡片上单击配置。
- 前往登录设置,然后选择用户ID部分。
- 启用深度链接授权开关。
- 在深度链接URL字段,输入用于用户身份认证的链接。
- 如在网站上使用快速登录区块:
- 前往快速登录区块。
- 在布局部分,启用二维码开关。
- 要检查身份认证,请单击预览。
- 要发布网站,请单击发布。
深度链接是一种特殊的URL,不仅可以将用户跳转至应用程序或网站的主页面,还可以直接将其跳转至特定的区段、页面或操作。
深度链接允许用户一键通过游戏认证进入网页商城,而无需使用用户ID或艾克索拉登录管理器经历身份认证过程。
如果游戏安装在用户移动设备上,将通过深度链接跳转到游戏获取一个授权令牌。
当深度链接作为主要身份认证方式时,用户可以保存支付详情。这是通过用户ID加深度链接进行身份认证所无法实现的功能。该情况中,深度链接仅加快身份认证速度,不提供额外功能。
用户流程
在移动应用中
- 网页商城中的未授权用户点击登录按钮或购买按钮。随后将打开一个用于通过移动游戏登录的模态窗口。
- 用户点击通过手机游戏登录按钮。
- 用户将被跳转至游戏,然后自动以授权用户身份返回网页商城。
在桌面版本中
- 网页商城中的未授权用户点击登录按钮或购买按钮。随后将打开一个使用二维码登录游戏移动版本的模态窗口。
- 用户使用移动设备扫描二维码。
- 网页商城在用户的移动设备上打开。
- 用户自动跳转至游戏,然后以已认证用户身份返回网页商城。
服务交互过程
如何设置
游戏侧
- 在游戏的移动应用设置中,注册一个URL机制来通过深度链接打开游戏:
- Android应用 —
AndroidManifest.xml
文件中 - iOS应用 —
Info.plist
文件中
- Android应用 —
- 注册机制后,用户通过游戏认证进入网页商城时,游戏应在指定地址打开。
- 游戏注册URL机制示例:
gamename
— 将在移动设备上打开用于用户身份认证的游戏名称。authorize
— 游戏打开后要执行的操作名称示例。请使用与应用程序操作系统中的操作相匹配的操作名称。operationPayload=<VALUE>
— 包含身份认证过程中用于生成令牌的信息的附加参数。
gamename://authorize?operationPayload=<VALUE>
,其中:- 示例:
- xml
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>gamename</string>
</array>
</dict>
</array>

- xml
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="gamename" android:host="authorize" />
</intent-filter>
- 实现使用游戏中的用户ID生成JWT格式的授权令牌。
在调用POST
方法https://sb-user-id-service.xsolla.com/api/v1/user-id/token
之前,请确保已完成身份认证。
如果未提供身份认证标头,将无法保存支付方式和购买订阅。
- 艾克索拉API使用基本身份认证。所有API请求都必须包含
Authorization: Basic
头,其中your_authorization_basic_key
是以Base64标准编码的client_id:client_secret
对。- 服务器身份认证的OAuth 2.0客户端设置通过发布商帐户完成。详细步骤请参阅文档。
参数 | 类型 | 描述 |
---|---|---|
loginId | string | 发布商帐户中授权方式的ID。必需。 |
settings.projectId | string | 发布商帐户中的项目ID,可在浏览器地址栏中的项目名称旁边找到。该URL的格式如下:https://publisher.xsolla.com/<merchantId>/projects/<projectId> 。必需。 |
settings.merchantId | string | 发布商帐户中的商户ID,可在公司设置 > 公司部分或在发布商帐户任意页面的浏览器地址栏的URL中找到。该URL的格式如下:https://publisher.xsolla.com/<merchantId>/ 。必需。 |
user.id | string | 游戏中的用户ID。必需。 |
user.country | string | 两个大写字母的国家/地区代码(遵循ISO 3166-1 alpha-2标准)。有关艾克索拉支持的国家/地区以及确定国家/地区的流程的详细信息,请查看文档。必需。 示例:US |
operationPayload | string | 包含身份认证过程中用于生成令牌的信息的附加参数。必需。 |
首次生成授权令牌之前,请发送邮件至csm@xsolla.com联系您的项目经理,以激活令牌配置。此步骤对于确保安全用户身份认证方法的正常运行至关重要。
- 使用curl调用用户令牌生成API方法的示例:
- curl
curl -X 'POST' \
'https://sb-user-id-service.xsolla.com/api/v1/user-id/token' \
-H 'Accept: /' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic <Base64Encoded(client_id:client_secret)>' \
-d '{
"loginId": "000001aa-001a-0ab0-00001-01a01a01a01a",
"settings": {
"projectId": 123456,
"merchantId": 123456
},
"user": {
"id": "123",
"country": "US"
}
"operationPayload": "kosarb2NyrtIWaegJAH1f6P7XrBYPXYDya5coc_ZzcfiS_5o4QTUAL-CcGRC_Kv4CAtg"
}'
- 您将获得类似于
{token="JWT_TOKEN"}
的响应。- 添加一个包含授权成功通知(可选)。
- 实现使用获得的用户令牌在浏览器中打开网页商城。
- 在浏览器中为已授权用户打开网页商城的URL示例:
https://example.com/?token={token}
(使用自定义域名时)https://example.xsolla.site/?token={token}
(使用艾克索拉域名时)
- 其中
{token}
为用户的授权令牌。在建站器中
- 在发布商帐户中打开您的项目,前往建站器。
- 在您的网页商城网站卡片中,单击配置。
- 前往登录设置,然后选择深度链接部分。
- 在深度链接URL字段,输入用于用户身份认证的链接。
- 如在网站上使用快速登录区块:
- 前往快速登录区块。
- 在区块设置中,调整二维码登录按钮的显示样式。
- 要检查身份认证,请单击预览。
- 要发布网站,请单击发布。
用户流程
- 在配置了艾克索拉登录管理器认证的情况下,用户前往网页商城。
- 用户点击所选商品的购买按钮、页首栏中的登录按钮或快速登录区块中的登录按钮。
- 随后将打开一个模态窗口,其中包含在艾克索拉登录管理器中设置的身份认证方式。
- 用户前往授权并在需要时输入补充数据。
- 系统检查用户在游戏中是否存在。如用户在游戏中存在,用户即在网页商城中完成授权,否则将显示错误消息。
如何获取
- 在网站的建站器中,前往登录管理器设置区块。
- 选择艾克索拉登录管理器授权方式。
- 在下拉菜单列表中,选择新建登录管理器。
随后将自动创建使用通过邮箱和密码进行用户认证的登录管理器项目。对于创建的登录管理器项目,网页商城地址将指定为以下情况下将用户重定向到的回调URL:
- 认证成功后
- 邮箱验证成功后
- 密码重置后
- 认证失败时
更改网页商城的域名时,登录管理器项目设置中的回调URL将自动更改。
- 从模态窗口中前往登录管理器项目设置,或在艾克索拉登录管理器区块中单击设置认证方法。
对于网页商城中的用户认证,请设置应用程序中认证使用的相同社交网络。如果未设置社交网络,将使用通过邮箱地址和密码进行用户认证。
在网页商城中设置通过社交网络进行用户认证时,请使用应用程序中认证使用的相同应用程序ID和应用程序密钥。

- 连接用户数据存储。
根据用户数据的存储方式不同,可用的产品功能也不同(请参阅用户数据存储方式比较)。
艾克索拉存储
如希望登录管理器产品处理所有认证逻辑,请连接艾克索拉存储。您将可以使用更多灵活的设置。
创建登录管理器项目时,默认会连接艾克索拉存储,无需额外配置步骤。如更改了默认存储类型后需要重新连接艾克索拉存储,请执行以下步骤:
- 前往用户数据库区块,然后选择存储部分。
- 选择艾克索拉存储,然后单击保存更改。
PlayFab存储
如果要使用PlayFab功能与用户交互,请连接PlayFab存储。它存储以下用户数据:
- 用户名
- 用户邮箱地址
- 用户密码
- 更详细注册表单的字段(如事先进行了设置)
使用PlayFab可实现以下功能:
- 用户注册
- 通过邮箱地址或用户名和密码进行认证
- 通过Twitch进行认证
- 用户密码重置
- 用户拦截
要连接该存储:
- 前往用户数据库区块,然后选择存储部分。
- 选择PlayFab。
- 在游戏ID字段,输入PlayFab帐户中同一字段的值。
- 单击保存更改。
Firebase存储
如果要使用Firebase功能与用户交互,请连接Firebase存储。它存储以下用户数据:
- 用户名
- 用户邮箱地址
- 用户密码
- 更详细注册表单的字段(如事先进行了设置)
- 前往用户数据库区块,然后选择存储部分。
- 选择Firebase。
- 在API密钥字段,输入Firebase帐户中同一字段的值。
- 单击保存更改。
自定义存储
如果使用自有认证系统并在自己的应用程序侧存储用户数据,请连接自定义存储。
使用自定义存储可实现以下功能:
- 用户注册
- 通过邮箱地址或用户名和密码进行认证
- 通过手机号进行免密认证
- 通过社交网络进行认证
- 用户密码重置
连接自定义存储
- 前往用户数据库区块,然后选择存储部分。
- 选择自定义存储。
- 输入API请求要发送到的URL:
- 单击保存更改。
- 对所设置的URL实现以如下形式响应的API:
- 使用HTTP 200/HTTP 204指示请求成功。如果需要,可以将包含其他用户数据的JSON置于响应正文中。传输的数据将写入JWT(
partner_data
参数)。 - 使用其他HTTP状态代码指示失败的请求。
- 使用HTTP 200/HTTP 204指示请求成功。如果需要,可以将包含其他用户数据的JSON置于响应正文中。传输的数据将写入JWT(
- 如果希望JWT中包含数据库中的用户ID,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
- 要让手机免密认证正常工作,您的API响应必须包含与客户端用户ID一致的
account_id
。
设置对来自艾克索拉登录管理器服务器的请求进行处理
艾克索拉登录管理器服务器请求发送至在发布商帐户中指定的URL,且包含Authorization: Bearer <JWT>
头。JWT使用您的项目密钥签名。
要处理请求:
声明 | 类型 | 描述 |
---|---|---|
exp | Unix Timestamp | JWT的过期日期和时间。JWT寿命为7分钟。 |
iat | Unix Timestamp | 使用该JWT时的日期和时间。 |
iss | string | 签名JWT的服务,例如https://login.xsolla.com 。 |
request_type | string | 常量:gateway_request 。 |
xsolla_login_project_id | string (UUID) | 您发布商帐户的登录管理器项目ID。 |
social_access_token | string (UUID) | 用户通过其进行身份认证的社交网络的访问令牌。要启用此声明的传输,请联系您的客户成功经理或发送邮件至csm@xsolla.com。 |
- json
{
"exp": 1573635020,
"iat": 1573634600,
"iss": "https://login.xsolla.com",
"request_type": "gateway_request",
"xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}
设置快速登录区块
快速登录区块在网站上向用户提供一种额外身份认证方式。
区块的外观和功能取决于所选认证方式。
如为网站配置了通过用户ID进行认证,则快速登录区块将显示一个ID输入字段和一个登录按钮。
功能:
- 无需额外转移到模态窗口即可进行用户认证。
- 设置区块的内容。您可以启用并配置以下部分:
- 标题
- 描述
- 如何找到用户ID的说明
- 自定义背景
您还可以扩展区块功能,例如使用JS代码添加文字、按钮、图片等。

如为网站配置了通过艾克索拉登录管理器进行认证,则快速登录区块中将显示一个额外授权召唤按钮。在区块中点击该按钮时,将打开一个使用艾克索拉登录管理器方法之一进行授权的模态窗口。
功能:
- 设置召唤授权的按钮文字
- 设置自定义背景
您还可以扩展区块功能,例如使用JS代码添加文字、按钮、图片等。
对于新建网站,网页商城模板中默认包含快速登录区块,您可以在需要时移除该区块。
如之前已创建了网站且其中没有快速登录区块,您可以进行添加。
要添加快速登录区块:
- 在发布商帐户中打开项目。
- 在侧边栏中单击建站器。
- 在站点部分,选择您的网站,然后单击打开建站器。
- 单击添加区块。
- 选择快速登录区块。
下一步
有用链接
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。