AuthResult
Data structure
If the game uses the FirstLogin
field to determine whether the player is a new user, when clearing data, the game needs to inform Player Network SDK to clear the relevant data.
FINTLAuthResult: Inherits from FINTLBaseResult, include login information.
Name | Type | Description |
---|---|---|
OpenID | FString | Player Network SDK unique user ID |
Token | FString | User token generated by Player Network SDK |
TokenExpire | int64 | Token expiration timestamp For example, 1600844518 |
FirstLogin | int32 | Whether this is the first login -1: Unknown 0: No 1: Yes |
UserName | FString | User defined nickname |
Gender | int32 | Gender 0: Undefined 1: Male 2: Female |
Birthdate | FString | Birth date For example, 1987-02-23 |
PictureUrl | FString | User avatar URL |
Pf | FString | pf value For Midas payment |
Pfkey | FString | pf key For Midas payment |
NeedRealNameAuth | bool | Whether real-name verification is required |
ChannelID | int32 | Channel ID |
ChannelName | EINTLLoginChannel | Channel name |
ChannelInfo | FString | Third-party channel login information JSON data, each Channel has its own value |
BindList | FString | Linking information JSON data in array type |
LegalDocumentsAcceptedVersion | FString | The accepted version of legal documents |
DeleteAccountStatus | int32 | Account deletion status For more information, see DeleteAccountStatus. |
DeleteAccountInfo | String | Reach out to the Player Network representative if DeleteAccountInfo is requiredDelete account information, JSON data. For more information, see DeleteAccountInfo. |
TransferCode | FString | Transfer code |
TransferCodeExpireTime | int32 | Expiration time for transfer code |
DeleteLIAccountStatus | int | LEVEL INFINITE PASS account deletion status For more information, see DeleteLIAccountStatus. |
string | Email address |
The ExtraJson in FINTLAuthResult
contains the JSON strings for the Protocol version and Compliance result of the player queried from the backend.
Protocol version
The template string for the protocol version is:
"need_notify_rsp": {
"has_bind_li": true,
"is_receive_email": 1,
"is_receive_email_in_night": 0,
"user_agreed_game_dma": "",
"user_agreed_game_pp": "36",
"user_agreed_game_tos": "36",
"user_agreed_li_dt": "",
"user_agreed_li_pp": "1",
"user_agreed_li_tos": "",
"need_notify": false
}
Parameter | Type | Description |
---|---|---|
user_agreed_game_tos | string | Version of the Terms of Service the player agreed to, pass null if player does not agree |
user_agreed_game_pp | string | Version of the Privacy Policy the player agreed to, pass null if player does not agree |
user_agreed_li_pp | string | Version of the LEVEL INFINITE PASS Privacy Policy the player agreed to, pass null if player does not agree |
user_agreed_li_dt | string | Version of the Data Transfer agreement the player agreed to, pass null if player does not agree |
user_agreed_li_tos | string | Version of the LEVEL INFINITE PASS Terms of Service the player agreed to, pass null if player does not agree |
is_receive_email | int | Whether to receive marketing emails |
is_receive_email_in_night | int | Whether to receive marketing emails (South Korea) |
need_notify | bool | Whether LI PASS agreements has been upgraded |
has_bind_li | bool | Whether account has linked to LI PASS |
Compliance result
The template string for minor authentication status is:
"get_status_rsp": {
"adult_age": 18,
"adult_age_map": "{\"1\":18,\"10\":18,\"11\":18,\"2\":18,\"3\":14,\"4\":14,\"5\":18,\"6\":18,\"7\":18,\"8\":18,\"9\":18}",
"adult_check_status": 1,
"adult_check_status_expiration": "0",
"certificate_type": 0,
"email": "",
"eu_user_agree_status": 0,
"game_grade": 0,
"game_grade_map": "{\"1\":14,\"2\":14,\"5\":14}",
"is_dma": false,
"is_eea": false,
"is_need_li_cert": false,
"msg": "success",
"need_parent_control": 0,
"need_realname_auth": 0,
"parent_certificate_status": 0,
"parent_certificate_status_expiration": "0",
"parent_control_map": {},
"qr_code_ret": 0,
"realname_auth_status": 0,
"region": "344",
"ret": 0,
"ts": "1712112893"
}
Parameter | Type | Description |
---|---|---|
ret | number | Return code 0: Request success, parse related returned field information. !=0: Request failure, check msg for the detailed return message. |
msg | string | Return message |
adult_check_status | number | Player adult status -1: Minor 0: Not set 1: Adult |
adult_check_status_expiration | string | The next authorization time required for minors |
parent_certificate_status | number | Parental consent status -1: Refuse 0: No consent provided 1: Consent 10: In progress (for email authorization only) |
parent_certificate_status_expiration | string | The next authorization time after the parent refused |
eu_user_agree_status | number | Whether players in the EU region consent to transfer their user data to non-EU regions -1: Refuse 0: Not set 1: Consent |
ts | string | Current timestamp |
adult_age | number | Age of majority according to country/region Use default age if not found. |
game_grade | number | Game rating standard according to country/region Use default rating if not found |
adult_age_map | string | Age of majority according to platform for South Korea |
game_grade_map | string | Game rating standard according to platform for South Korea |
certificate_type | number | Authorization type according to country/region Use the default authorization type if not found 0: Authorization not required 1: Self-authorization 2: Credit-card authorization 3: Email authorization |
region | string | ISO 3166-1 numeric code for country or region For example 156 for China, 040 for Austria |
Age requirement for South Korea
When querying for the compliance information of a player, extra steps will have to be taken if the player is from South Korea, due to requirements from the South Korean government. As such, AdultAgeMap
and GameGradeMap
will be used to determine the age requirements of the specific device platform being used.
OS | Platform |
---|---|
1 | Android |
2 | iOS |
5 | PC |
6 | Switch |
10 | PS5 |
11 | Xbox |
For example, the age of majority for PC will be AdultAgeMap[5]
, while the game rating standard for PC will be GameGradeMap[5]
.
int adultAgeInPC = AdultAgeMap[5]
int gameGradeInPC = GameGradeMap[5]
DeleteAccountStatus
Reach out to the Player Network representative to configure DeleteAccountStatus
, otherwise DeleteAccountStatus
returns -1.
Value | Description | Remark |
---|---|---|
0 | No account deletion or account deletion has been canceled | Allow players to enter the game |
1 | Account deletion cooling-off period | Reject player login, prompt players whether to cancel account deletion and enter the game |
2 | Account deletion completed | Reject player login |
3 | Account deletion in progress | Reject player login |
4 | Account deletion failed | Reject player login |
-1 | The backend does not return the account deletion status. | Recommend allowing players to enter the game |
-2 | The network is unstable for the deletion status service. | Recommend allowing players to enter the game |
-3 | DMCS response data format is wrong (The return status or err_code fields are missing in JSON) | Recommend allowing players to enter the game |
-4 | Internal error (parameter verification is incorrect or configuration verification is not equal to internal authorization logic.) | Recommend allowing players to enter the game |
-10 or -11 | Internal error in the account deletion status service | Recommend allowing players to enter the game |
>= 5 | Undefined | Recommend allowing players to enter the game |
Reasons for recommending allowing players to enter the game:
- Rejecting player login affects all players. It is not recommended to make it the critical path for account deletion.
- At the same time, games should review if allowing players to enter the game when the return value is negative will have other influences on game data.
DeleteAccountInfo
The JSON data is as follows:
{
"ret": 0, // int, return code, 0 indicates normal
"err_code": -10, // int, error code for INTL, games no need to pay attention
"msg": "", // error message, empty when the request is successful
"status": 0, // int, 0: no record or account deletion is cancelled; 1: cooling-off period; 2: account deleted successfully; 3: deleting account; 4: account deletion failed
"created_at": 12345678, // int64, timestamp when the account deletion request is created (when status is 0, timestamp is 0)
"target_destroy_at": 12345678, // timestamp to execute the account deletion (when status is 0, timestamp is 0)
"destroyed_at": 12345679 // int64, timestamp when the account is actually deleted (when status is not 2, timestamp is 0)
}
DeleteLIAccountStatus
Value | Description |
---|---|
-1 | Account deletion status query failed or backend didn't return the status |
0 | No delete account records or delete request has been withdrawn |
1 | Account deletion requested |
2 | Account deletion succeeded |
3 | Deleting an account| |
4 | Failed to delete an account |