토큰 검증
토큰 검증하기
앱에서 로그인 성공 후 PlayerInfo 응답 값에 있는 토큰, PlayerID, DID를 이용하여 게임 서버에서는 로그인한 사용자의 토큰 키 유효성 여부를 검증할 수 있습니다. 앱에서 중복 로그인을 허용하지 않는 경우, 검증이 완료된 토큰키를 관리하거나 이를 이용한 게임 자체의 세션키를 관리하여 해당 기능을 구현해야 합니다.
Note
인증은 장애가 발생하거나 네트워크 통신이 원활하지 않을 경우에 대비하여 분산 환경을 구성하고 있습니다. 만약 장애나 네트워크 통신 이상으로 게임 서버에 정의된 통신 타임아웃 시간을 초과하면 분산 환경 URL을 호출해야 합니다.
| 필드명 | 설명 | 타입 | 필수 여부 |
| Authorization | 로그인 성공 후 반환된 토큰키 | String | Y |
| ISCRYPT | 데이터 암호화 여부, 0=암호화 안 함 | Integer | Y |
| 필드명 | 설명 | 타입 | 필수 여부 |
| appid | 로그인 한 게임의 AppID | String | Y |
| did | 로그인 성공 후 반환된 Hive가 생성하는 인스턴스 ID | String | Y |
| player_id | 로그인 성공 후 반환된 인증 PlayerID | BigInteger | Y |
| hive_certification_key | 하이브 인증키(앱 센터에서 발급) 자세히 | String | N |
| include_fields | 응답 시 추가 정보를 요청할 필드 목록 | Array | N |
Note
include_fields 파라미터를 통해 선택적으로 추가 정보를 반환할 수 있습니다. 토큰 검증하기 요청 시 include_fields 배열에 명시된 필드값을 기반으로 응답의 data 하위에 해당 정보가 포함됩니다.
| 필드명 | 설명 | 타입 |
| result_code | 검증 결과, 0=검증 성공 자세히 | Integer |
| result_msg | 결과 메시지 | String |
| data | 요청 시 include_fields에 명시된 정보가 포함된 객체 | Object |
- 추가 필드 목록 (
include_fields)
| 필드명 | 설명 | 타입 |
| is_blocked | 이용 제한 여부 (true - 제재, false - 정상) | Boolean |
| is_device_registered | 기기 관리 사용 여부 (true - 사용, false - 미사용) | Boolean |
| join_timestamp | player_id 가입일 (Unix Timestamp) | Long |
| china_pi_no | 중국 실명 인증 번호. 실명 인증이 완료되지 않은 경우 null 반환 | String / null |
{
"appid":"com.withhive",
"did":"255764404509548",
"player_id": 10000000000,
"hive_certification_key" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY"
}
{
"result_code":0,
"result_message":"SUCCESS"
}
- Requestexample(include_fields)
{
"appid":"com.withhive",
"did":"255764404509548",
"player_id": 10000000000,
"hive_certification_key" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY",
"include_fields": ["is_blocked", "is_device_registered", "join_timestamp", "china_pi_no"]
}
- Responseexample(include_fields)
{
"result_code": 0,
"result_msg": "SUCCESS",
"data": {
"is_blocked": false,
"is_device_registered": false,
"join_timestamp": 1495594605,
"china_pi_no": null
}
}
결과 코드
| 코드값 | 설명 |
| 0 | 성공 |
| 2300 | 환불 사용자 재결제 대상 |
| 4000 | 유효하지 않은 파라미터 |
| 4001 | request json 에러 |
| 4002 | 하이브 인증키 에러 |
| 5000 | DB 에러 |
| 5001 | 분산환경(AWS)에서 유효하지 않은 토큰 |
| 6000 | 유효하지 않는 appid |
| 6001 | IDP 토큰 에러 |
| 7000 | 유효하지 않은 토큰 |
| 7001 | header에 토큰값 없음 |
| 9999 | 알 수 없는 오류 |
토큰을 검증하고 PlayerID에 해당하는 IdP ID 리스트를 반환
게임 내 커뮤니티에서 로그인 성공 후, 토큰, PlayerID, AppID, DID(Authorization 토큰, PlayerID, DID는 로그인 후 PlayerInfo로 받음)를 이용하여 로그인한 사용자 토큰 유효성을 검증하고 PlayerID에 해당하는 IdP ID 리스트를 조회합니다.
Note
인증은 장애가 발생하거나 네트워크 통신이 원활하지 않을 경우에 대비하여 분산 환경을 구성하고 있습니다. 만약 장애나 네트워크 통신 이상으로 게임 서버에 정의된 통신 타임아웃 시간을 초과하면 분산 환경 URL을 호출해야 합니다.
| 필드명 | 설명 | 타입 | 필수 여부 |
| Authorization | 로그인 성공 후 반환된 토큰값 | String | Y |
| ISCRYPT | 데이터 암호화 여부, 0=암호화 안 함 | Integer | Y |
| 필드명 | 설명 | 타입 | 필수 여부 |
| appid | 로그인한 게임의 AppID | String | Y |
| did | 로그인 성공 후 반환된 DID | String | Y |
| player_id | 로그인 성공 후 반환된 인증 PlayerID | BigInteger | Y |
{
"player_id": 10000000000,
"appid" : "com.com2us.hivesdk.normal.freefull.google.global.android.common",
"did" : "303581410"
}
| 필드명 | 설명 | 타입 |
| result_code | 검증 결과, + 0: 성공 + 4000: 파라미터 값이 정상적이지 않음. + 7000: 검증 실패. 검증할 토큰 값이 일치하지 않음. | Integer |
| result_msg | 결과 메시지 | String |
| data | 결과 데이터 | JSON |
| 필드명 | 설명 | 타입 |
| data.list | 결과 데이터 리스트 | Array |
| data.list.player_id | Request Body로 요청한 PlayerID | String |
| data.list.idp_user_id | IdP에서 전달받은 Account Id | String |
| data.list.idp_index | idp_index + 1: 하이브 플랫폼 + 2: 페이스북 + 3: 구글 + 9: 애플 | String |
{
"result_code": 0,
"result_msg": "SUCCESS",
"data": {
"list": [
{
"player_id": "10000000000",
"idp_user_id": "68101398",
"idp_index": "1"
}
]
}
}