https://login.xsolla.com/api
Login API支持以下令牌类型:
您可以按照身份认证机制来判断一个API调用属于客户端侧还是服务器侧:
Authorization
header: Bearer <user_JWT>
header,
where <user_JWT>
— is the user token.X-SERVER-AUTHORIZATION: <server_JWT>
, where
<server_JWT>
— is the server token.要获取令牌,请发送以下请求之一:
JWT认证后,用户将重定向到在查询参数中包含令牌的回调URL:<Callback URL>?token=<User token (JWT)>
。
进行基于OAuth 2.0协议的认证后,请将生成JWT请求发送给艾克索拉登录管理器服务器来用收到的code
交换用户令牌(access_token
)。
要获取服务器令牌:
在应用程序的后端,实现使用生成JWT API调用获取服务器JWT的方法。请求必须包含以下参数:
grant_type
is the type of getting JWT, pass the client_credentials
value.client_secret
is the secret key that is received when you set up the server
OAuth 2.0 client.client_id
is the client ID received when you set up the server OAuth 2.0
client.To prevent Xsolla system overloads and protect against sudden spikes in
incoming traffic, Xsolla limits the number of requests received by the Xsolla
API within a specified period of time. If the limit is exceeded, the Xsolla API
returns an HTTP response with the 429
status code.
Rate limits vary by method, IP-address, authentication scheme, and other factors.
Rate limits for server-side methods are applied to methods with server-side
authentication — methods that are called with the X-SERVER-AUTHORIZATION:
<server_JWT>
header, where <server_JWT>
is the server
token.
Rate limits for client-side methods are applied to methods without
authentication or with client-side authentication — methods that are called
with the Authorization: Bearer <user_JWT>
header, where
<user_JWT>
is the user token.
Example of a method with server-side authentication: Example of a method with client-side authentication:
Rate limits for client-side methods do not change and are necessary to prevent brute-force attacks. The maximum request rate for server-side methods is higher than for client-side methods. You can refer to the recommendations on how to manage rate limits in the documentation.
每个密钥都一个JWT格式,并在负载中包含固定的信息。
身份认证或邮箱地址确认后,令牌会包含主要声明。这些声明的存在不依赖于用户数据库和认证调用。
声明 | 类型 | 必需 | 描述 |
exp |
Unix时间戳 | 是 | 令牌过期的日期和时间。默认过期时间是24小时。您可以更改各登录管理器项目的过期时间。 |
iss |
string | 是 | 给令牌签名的服务:https://login.xsolla.com 。 |
iat |
Unix时间戳 | 是 | 授予令牌的日期和时间。 |
sub |
字符串(UUID) | 是 | 写入在艾克索拉登录管理器服务器侧的用户ID。 |
groups |
array | 是 |
用户所在组的列表。每个组的写入格式如下:
只能有一个默认组。该组最初包含将用户分到不同组之前的所有用户。 |
xsolla_login_project_id |
字符串(UUID) | 是 | 登录管理器项目ID。 |
type |
string |
身份认证选项:
只能有一个默认组。该组最初包含将用户分到不同组之前的所有用户。 |
|
avatar |
string | 用户头像URL。 | |
username |
string | 用户名。 | |
publisher_id |
integer | 拥有登录管理器项目的商户ID。 | |
email |
string | 用户邮箱地址。 | |
payload |
string | 身份认证过程中在payload参数中传递的附加信息。 | |
promo_email_agreement |
boolean |
可以是以下值之一:
true 值。
要向登录管理器小组件的注册表单添加该功能:
|
|
connection_information |
string | 显示用户是否确认了其出生日期。确认由okname服务进行。 |
如果使用PlayFab存储,身份认证后包含在令牌中的声明如下。
声明 | 类型 | 必需 | 描述 |
external_account_id |
string | 是 | 用户PlayFab ID。 |
session_ticket |
string | 是 |
认证请求或向PlayFab API发送请求期间收到的SessionTicket参数。 如果通过OAuth 2.0协议来认证用户并向 |
entity_token |
string | 是 | 一个EntityToken.EntityToken参数。 |
entity_type |
string | 是 | 一个EntityToken.Entity.Type参数。只能有title_player_account 值。 |
entity_id |
string | 是 | 一个EntityToken.Entity.Id参数。 |
如果使用自定义存储,身份认证后包含在令牌中的声明如下。
声明 | 类型 | 必需 | 描述 |
provider |
string | 是 | 认证使用的社交网络的名称。如果用户通过用户名和密码进行认证,则声明的值为xsolla 。 |
external_account_id |
string | 您服务器侧的用户ID。 | |
partner_data |
Data of any type returned by your server in the response body during authentication. To enable the transmission of this claim, contact your Customer Success Manager or email to csm@xsolla.com | ||
social_access_token |
Access token of the social network through which the user was authenticated. To enable the transmission of this claim, contact your Customer Success Manager or email to csm@xsolla.com. |
通过社交网络进行认证后包含在令牌中的声明如下。这些声明的存在不依赖于用户数据库。
声明 | 类型 | 必需 | 描述 |
provider |
string | 是 | 认证使用的社交网络的名称。 |
id |
string | 是 | 社交网络中的用户ID。 |
is_cross_auth |
boolean | 显示静默认证请求正在进行中。 | |
social_access_token |
string | 用于认证的社交网络帐户access_token 参数。请联系您的帐户经理设置该功能。 |
|
picture |
字符串(URL) | 社交网络中用户个人资料图片的链接。 | |
birthday |
日期(RFC3339) | 社交网络中的用户出生日期。 | |
gender |
string | 社交网络中的用户性别。 | |
name |
string | 社交网络中的用户昵称。 |
服务器令牌在X-SERVER-AUTHORIZATION
头中传入。
令牌负载包含OAuth 2.0客户端拥有的资源的信息。令牌可以访问对这些资源有基于服务器认证的调用。
声明 | 类型 | 必需 | 描述 |
xsolla_login_project_id |
字符串(UUID) | 是 | OAuth 2.0客户端所属登录管理器项目的ID。 |
resources |
array | 是 |
OAuth 2.0客户端拥有的资源的列表。可能的资源类型:
各组的写入格式如下:
|
jti |
string | 是 | 唯一令牌ID。 |
To validate the JWT, use the following Login API calls:
注意
请勿将密钥告诉任何人。如果发生密钥泄露,请立即更新。
对于错误响应,艾克索拉登录管理器服务器返回包含以下字段的JSON对象:
字段 | 类型 | 描述 |
code | string | 艾克索拉登录管理器服务器错误代码。 |
description | string | 错误描述。文本始终为英文。发生错误时不要使用此文本,因为文本值将来可能会更改。 |
{
"error": {
"code": "000-000",
"description": "description"
}
}
Error Code | 描述 | Recommendation |
---|---|---|
002-016 | The user should try to log in again. | |
002-027 | Make sure all request parameters are correct. | |
002-028 | Make sure all required parameters are provided. | |
002-040 | The user should contact the game support team. | |
002-043 | The user should try another phone number that can receive SMS. | |
002-050 | The error occurs when trying to enable two-factor authentication if it's already enabled, or disable it if it's already disabled. | |
002-056 | The user should verify the phone number or enter a different one. | |
002-057 | The user should try again later. If you believe this error should not occur, please contact the integrator team in any messenger. | |
002-058 | The user should use the link in the email to unblock their account or reset the password. | |
002-060 | Inform the user of the age restrictions. | |
003-001 | The user should verify the entered information and try again. | |
003-002 | The user should sign up in the game to continue. | |
003-003 | The user should try a different username. | |
003-004 | The user should use a different email address. | |
003-005 | The user should try a different email address. | |
003-007 | The user should confirm their email address to activate the account. If they haven't received a confirmation email, they should check the spam folder. | |
003-008 | Changing the email address is not allowed. | |
003-009 | The search failed for technical reasons, please try again later. | |
003-010 | Changing the birth date is not allowed. | |
003-011 | The user should confirm the email address or use another one that has not been previously used during registration. | |
003-012 | The user should confirm the phone number or use another one that has not been previously used during registration. | |
003-019 | Check the existence of the authentication variant with the passed ID. | |
003-020 | Check the authorization option settings in your Publisher Account. | |
003-021 | The user should contact game support. | |
003-022 | Verify the authorization option settings in your Publisher Account. | |
003-023 | Registration is not allowed for this authorization option. The user should contact game support. | |
003-030 | The password reset link has expired or is incorrect. The user should attempt to reset the password again. | |
003-049 | The user should try again later. | |
007-001 | The user should use an alternative login method. | |
008-001 | Add the correct login URL in the authorization option settings in your Publisher Account (section User database > Storage > Custom storage). | |
008-002 | Add the correct user verification URL in the authorization option settings in your Publisher Account (section User database > Storage > Custom storage). | |
008-003 | Add the correct URL in the authorization option settings in your Publisher Account (section User database > Storage > Custom storage). | |
008-004 | Add the correct password reset URL in the authorization option settings in your Publisher Account (section User database > Storage > Custom storage). | |
008-005 | Ensure the correct Title ID is specified in the authorization option settings in your Publisher Account (section User database > Storage). | |
008-006 | Ensure the PlayFab API key is valid. | |
008-008 | Ensure the server returns the accountID parameter in the response body. |
|
008-009 | Verify the URLs specified in the Custom storage settings in the authorization option in your Publisher Account (section User database > Storage > Custom storage). | |
008-011 | Ensure that the callback URL for password reset is specified in the authorization option settings in your Publisher Account (section Password settings). | |
008-013 | Ensure that a link to the user agreement is specified in the authorization option settings in your Publisher Account (section Legal Terms > Policies and Agreements). | |
008-014 | Contact the integration team through any messenger. | |
008-015 | Contact the integration team through any messenger. | |
008-016 | Add the API key to the settings in your Publisher Account (section Legal Terms > Policies and Agreements). | |
010-004 | The user should try again later. | |
010-005 | The user should try again later. | |
010-006 | The user should add another authentication method before unlinking the social network. | |
010-007 | The user should complete the CAPTCHA again. | |
010-010 | The user should verify the code and try again. | |
010-014 | The user should log in again from the login page. | |
010-015 | The user should try again later. | |
010-016 | The user should use a different social account. If they believe this is an error, they should contact the integration team through any messenger. | |
010-017 | Verify the correctness of the request parameters being sent. | |
010-019 | Ensure that a client with the provided client_id exists. |
|
010-020 | Ensure that the provided scope parameter is correct. Refer to the instructions for detailed setup information. |
|
010-021 | Ensure that the value of the response_type parameter is set to "code" . |
|
010-022 | Ensure that the state parameter is present and consists of at least 8 characters. | |
010-023 | Ensure that the authorization code is valid and not expired, and that the redirect_uri parameter contains an authorized URL. Refer to the instructions for detailed setup information. |
|
010-026 | Ensure that you have sufficient permissions to access the resource. | |
010-030 | Ensure that cross-authentication is enabled for the authorization option. Refer to the instructions for detailed setup information. | |
010-031 | The error occurs when attempting to connect a social network that is already enabled. | |
010-032 | Ensure that the social network is enabled and configured in the authorization option settings in your Publisher Account (section Authorization via Social Networks). | |
010-033 | The user should try again later. | |
010-035 | The user should try again later. | |
010-045 | The user should use a different social account for registration. | |
030-024 | The user should contact the game support team. | |
040-001 | The user should enter an email address containing no more than 254 characters. | |
040-002 | The user should enter a valid email address. | |
040-003 | The user should enter a different email address. | |
040-004 | The user should contact Xsolla support. | |
040-005 | The user should enter an email with only one @ character. |
|
040-006, 040-007, 040-008 | The user should contact Xsolla support. | |
040-009 | The user should enter an email with an existing domain. | |
040-010 | The user should contact Xsolla support. | |
010-018 | The user should enter a different email address. | |
300-003 | The user should try again later. | |
300-005 | The user should try again later. | |
300-006 | The user should verify and re-enter the confirmation code. | |
300-008 | The user should use the new code sent to their email or phone. | |
003-007 | The user should confirm their email address to activate the account. If they haven't received a confirmation email, they should check the spam folder. | |
003-025 | The user should try a different authentication method. | |
003-040 | The user should log in again. | |
003-033 | Ensure that shadow authentication is used for the authorization option. | |
2002-0001 | Make sure that the attribute being created has not been previously added to the user. |