IdP account management
Creates and manages player accounts using IdP (Identity Provider) credential information.
The 'IdP account management' API operates through Server-to-Server communication, where the app server calls the Hive authentication server directly. It can be used for various purposes, including Player ID creation, login, IdP linking and unlinking, implementing login in a web environment, and migrating existing accounts.
Note
This API does not support user authentication or credential acquisition through external authentication providers such as Google, Meta, and Apple. Implement these processes directly in the app client and pass the results to the app server.
The APIs provided by the 'IdP account management' feature are as follows.
| API Endpoint | Description |
POST /v2/game/auth/signinidp | IdP login |
POST /v2/game/auth/connect | Link IdP |
POST /v2/game/auth/disconnect | Unlink IdP |
IdP login
Creates a Player ID for a new player using IdP information, or returns existing player information if the IdP is already registered. When the IdP login request succeeds, you can check the generated Player ID in data.player_id.
Request URL
| Field name | Description | Type | Required |
| X-Access-Token | OAuth 2.0 Access Token for app server authentication (See Issue OAuth token) | String | Y |
| ISCRYPT | Whether data is encrypted (0 = not encrypted; always pass 0) | Integer | Y |
Request body
| Field name | Description | Type | Required |
| appid | App ID | String | Y |
| idp_index | IdP index code. See IdP index reference | Integer | Y |
| idp_user_id | IdP user unique identifier | String | Y |
| require_token | Whether to request a player token. true when using the Delete account API; false when not using it | Boolean | Y |
Note
To use the Delete account API, set require_token to true to receive the Authorization value in the response header. If you do not use the account deletion feature, set it to false.
| Field name | Description | Type |
| Authorization | Session token. Issued only when require_token: true | String |
| Content-Type | Response data format (JSON) and character encoding (UTF-8) information | String |
| ISCRYPT | Whether the response is encrypted | Integer |
Response body
| Field name | Description | Type |
| result_code | Response code Details | Integer |
| result_msg | Result message | String |
| token_validation | JWT validation result (JWT validation error) | Object |
| token_validation.result_code | JWT validation result code | Integer |
| token_validation.result_msg | JWT validation result message | String |
| data.player_id | PlayerID | BigInteger |
| data.idp_index | IdP index | Integer |
| data.idp_id | IdP name | String |
| data.idp_user_id | IdP user ID | String |
Response code
| Code value | Description |
| 0 | Success |
| 2499 | JWT validation failed (see token_validation) |
| 4000 | Invalid parameter |
| 4001 | Request JSON error |
| 4200 | Nonexistent IdP |
| 5000 | Internal server error |
| 7000 | Invalid token |
| 7001 | No token value in header |
Request example
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 3,
"idp_user_id": "google_67890",
"require_token": true
}
Response example
HTTP/1.1 200
Content-Type: application/json; charset=UTF-8
Authorization: abcdf7ebce779429ea878f91d5f1c8
ISCRYPT: 0
Success
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000002,
"idp_index": 3,
"idp_id": "GOOGLE",
"idp_user_id": "google_67890"
}
}
Link IdP
Links a new IdP to an existing player account. IdP linking is available only after a Player ID has been created.
Request URL
| Field name | Description | Type | Required |
| X-Access-Token | OAuth 2.0 Access Token for app server authentication (See Issue OAuth token) | String | Y |
| ISCRYPT | Whether data is encrypted (0 = not encrypted; always pass 0) | Integer | Y |
Request body
| Field name | Description | Type | Required |
| appid | App ID | String | Y |
| idp_index | IdP index code. See IdP index reference | Integer | Y |
| idp_user_id | IdP user unique identifier | String | Y |
| player_id | PlayerID to link | BigInteger | Y |
Response body
| Field name | Description | Type |
| result_code | Response code Details | Integer |
| result_msg | Result message | String |
| token_validation | JWT validation result (JWT validation error) | Object |
| token_validation.result_code | JWT validation result code | Integer |
| token_validation.result_msg | JWT validation result message | String |
| data.player_id | PlayerID | BigInteger |
| data.idp_index | Linked IdP index | Integer |
| data.idp_id | Linked IdP name | String |
| data.idp_user_id | IdP user ID | String |
Response code
| Code value | Description |
| 0 | Success |
| 1002 | This IdP is already linked to another player |
| 1003 | The same IdP type is already linked |
| 2002 | Nonexistent player |
| 2499 | JWT validation failed (see token_validation) |
| 4000 | Invalid parameter |
| 4200 | Nonexistent IdP |
| 5000 | Internal server error |
| 7000 | Invalid token |
| 7001 | No token value in header |
Request example
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 2,
"idp_user_id": "fb_12345678",
"player_id": 100000001
}
Response example
Success
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000001,
"idp_index": 2,
"idp_id": "FACEBOOK",
"idp_user_id": "fb_12345678"
}
}
Already linked to another player
{
"result_code": 1002,
"result_msg": "Already connected other player",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000002,
"idp_index": 2,
"idp_id": "FACEBOOK",
"idp_user_id": "fb_12345678"
}
}
Unlink IdP
Unlinks an IdP linked to a player account. IdP unlinking is available only after a Player ID has been created.
Request URL
| Field name | Description | Type | Required |
| X-Access-Token | OAuth 2.0 Access Token for app server authentication (See Issue OAuth token) | String | Y |
| ISCRYPT | Whether data is encrypted (0 = not encrypted; always pass 0) | Integer | Y |
Request body
| Field name | Description | Type | Required |
| appid | App ID | String | Y |
| idp_index | IdP index code. See IdP index reference | Integer | Y |
| idp_user_id | IdP user unique identifier | String | Y |
| player_id | PlayerID to unlink | BigInteger | Y |
Response body
| Field name | Description | Type |
| result_code | Response code Details | Integer |
| result_msg | Result message | String |
| token_validation | JWT validation result (JWT validation error) | Object |
| token_validation.result_code | JWT validation result code | Integer |
| token_validation.result_msg | JWT validation result message | String |
Response code
| Code value | Description |
| 0 | Success |
| 2499 | JWT validation failed (see token_validation) |
| 4000 | Invalid parameter |
| 4006 | No linked IdP information |
| 4200 | Nonexistent IdP |
| 7000 | Invalid token |
| 7001 | No token value in header |
Request example
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 2,
"idp_user_id": "fb_12345678",
"player_id": 100000001
}
Response example
Success
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
}
}
Note
When JWT validation fails, you can check detailed error information in the token_validation field. For details, see JWT validation error codes.