로그인 검증 및 유저 정보 조회 로그인 검증 및 유저 정보 조회 는 로그인 페이지 호출하기 에서 리다이렉트된 임시 인증 코드(state
)를 사용해 로그인 정보를 검증하고, 유저 정보를 반환하는 API입니다. 유저 정보 반환 시, 액세스 토큰과 리프레시 토큰을 포함합니다.
로그인 검증 및 유저 정보 조회 API를 요청하여 반환되는 값은 크게 아래와 같습니다.
IdP 정보 유저의 정보 액세스/리프레시 토큰 Note 로그인 검증 성공 후 유저 정보 또는 토큰 정보가 필요한 경우는 아래와 같습니다.
웹 로그인 검증에 성공하고 PlayerID가 생성된 유저의 경우, 응답에 유저 정보(user_info
)가 포함됩니다. 단,유저 정보가 변경되었거나 별도로 확인이 필요한 경우에는 인증 API로 유저 정보 조회 를 호출하여 확인할 수 있습니다. 액세스/리프레시 토큰이 필요한 경우, 웹 로그인을 다시 수행하거나 토큰 만료 전에 토큰 갱신 API를 통해 갱신해야 합니다. Request URL Request Body 필드명 타입 설명 필수 여부 grant_type String OAuth 2.0 인가 코드 방식 기본값: authorization_code
Y state String 로그인 후 전달 받은 임시 인증 코드 (authorization_code) Y client_id String 보안 키 설정에서 생성한 OAuth 2.0 Client ID. Hive 콘솔 앱센터 > 보안 키 설정 에서 확인할 수 있습니다. Y client_secret String 보안 키 설정에서 생성한 OAuth 2.0 Client Secret. Hive 콘솔 앱센터 > 보안 키 설정 에서 확인할 수 있습니다. Y redirect_uri String 리다이렉트 URI 주소입니다. Hive 콘솔 인증 > 인증 환경 설정 > 로그인 설정 에서 설정한 Redirect URI
와 일치해야 합니다. Y
Request Body Example {
"grant_type" : "authorization_code" ,
"state" : "1627881984263-jkx1B3GOY3EsJ" ,
"client_id" : "58b48cd3-df47-5b52-2627-3f9c8d01" ,
"client_secret" : "bec7760b237244c4c818d6174587d8e1" ,
"redirect_uri" : "https://community.withhive.com/hivesdk/login/redirect"
}
Response Body 필드명 타입 설명 비고 code Integer 웹 로그인 응답 코드 appid String 앱 아이디 idp_index Integer 로그인 시 사용된 IdP 인덱스 1
: Hive2
: Facebook3
: Google9
: Apple idp_user_id String 로그인 시 사용된 IdP 고유 식별자 enc_idp String IdP 정보 암호화한 키 외부 PC 자동 로그인 토큰 발급 키 user_info JSON 유저 정보 user_info.auth_ver String 인증 서버 버전 user_info.user_id BigInteger 인증v4 PlayerID user_info.user_idp_list Array 연동된 IdP 리스트 유저가 연동한 IdP 정보를 담은 리스트 user_info.user_idp_list.player_id BigInteger 연동된 IdP 리스트 - 인증v4 PlayerID user_info.user_idp_list.idp_user_id String 연동된 IdP 리스트 - IdP 고유 식별자 user_info.user_idp_list.idp_index Integer 연동된 IdP 리스트 - IdP 인덱스 1
: Hive2
: Facebook3
: Google9
: Apple user_info.user_idp_list.idp_id String 연동된 IdP 리스트 - IdP 아이디 GUEST는 다른 IdP로 플레이 했어도 기본으로 생성 user_info.is_blocked Boolean 이용 정지 여부 true
: 이용 정지 유저false
: 정상 유저 user_info.is_refund Boolean 환불 유저 재결재 대상 여부 true
: 환불 유저 재결제 대상 유저false
: 환불 유저 재결제 미대상 유저 user_info.access_token String 액세스 토큰 (JWT) - 비대칭 알고리즘 계정(PlayerID)이 없으면 발급 되지 않음. 유효 시간: 1시간 user_info.refresh_token String 리프레시 토큰 (JWT) - 비대칭 알고리즘 계정(PlayerID)이 없으면 발급 되지 않음. 유효 기간: 30일
웹 로그인 응답 코드 code 설명 비고 100 성공 1050 유효하지 않은 파라미터 1075 인증 서버 통신 에러 2011 프로젝트 정보가 없음 2013 프로젝트가 종료된 상태 2021 IdP 인증 완료를 하지 않은 유저 이거나, 유저의 토큰 세션이 만료된 경우 2023 유저의 토큰 정보 비정상 7000 OAuth2.0 보안 키를 생성하지 않음 Hive 콘솔 앱센터 > 보안 키 설정 에서 확인 7001 OAuth2.0 Client ID 값이 없음 〃 7002 OAuth2.0 Client 정보 불일치 〃 7003 OAuth2.0 Client 정보 없음 〃 7004 OAuth2.0 지원하지 않는 토큰 발급 타입 Request Body의 grant_type 확인 7005 OAuth2.0 리다이렉트 URI 불일치 Request Body의 redirect_uri 확인 8001 OAuth2.0 JWT 토큰 생성 실패
Response Body Sample (성공 - 유저 정보 존재) 아래와 같은 조건 만족 시, 반환되는 응답 데이터 예시입니다.
웹 로그인이 정상적으로 완료된 경우 인증 서버에 PlayerID가 생성되어 있는 경우 {
"code" : 100 ,
"appid" : "com.com2us.hivesdk.ios.community.global.normal" ,
"idp_index" : 3 ,
"idp_user_id" : "105213591741718897220" ,
"enc_idp" : "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW" ,
"user_info" : {
"auth_ver" : "v4" ,
"user_id" : 20000018552 ,
"user_idp_list" : [
{
"player_id" : 20000018552 ,
"idp_user_id" : "105213591741718897220" ,
"idp_index" : 3 ,
"idp_id" : "GOOGLE"
},
{
"player_id" : 20000018552 ,
"idp_user_id" : "0" ,
"idp_index" : 0 ,
"idp_id" : "GUEST"
}
],
"is_blocked" : false ,
"is_refund" : false ,
"access_token" : "eyJraWQiOiIwYThlMThkOS1hNmZiLTM3ZDMtNjkwYy02Zjg1ZTllNCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc193aGl0ZWxpc3QiOmZhbHNlLCJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwiZ3JhbnRfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoyMDAwMDAxODU1MiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImV4cCI6MTc0NTU2MTk4MywiaWF0IjoxNzQ1NTU4MzgzLCJhdXRoX3ZlciI6InY0In0.e4mCIirRpAni4A1ZEF3FDOFng3Da8hq6IqZmyyRQZsc7W3LfFi_id5TIQSDbvmagmT4GcwHztovpoYZxf8blwqES1lJmEVXsBBJ3qpEOAem0K9aVwY0zmOO3A0Eeh6Y0APABewNCpHiKPCMZwxSsMaUE56FfuYgnbhpsipR638VgyPniRVU-Bzcu0Pi2zo-5yUKbg2FCXex510fvZRxqGZPg8Rfhm-jXqAYuwALLIFf2ZykOWqVRFtczfPXwB6fLQrQvQeBnOYcHHnR1q8Fi-Rk_bQPsAffIemGvaC4vUeyx6Szzt_Gok1BsuF76lYZ5ogCn4lAlZ0SJLrgMM2-DNQ" ,
"refresh_token" : "eyJraWQiOiIwYThlMThkOS1hNmZiLTM3ZDMtNjkwYy02Zjg1ZTllNCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc193aGl0ZWxpc3QiOmZhbHNlLCJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwiZ3JhbnRfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoyMDAwMDAxODU1MiwidG9rZW5fdHlwZSI6InJlZnJlc2hfdG9rZW4iLCJleHAiOjE3NDgxNTAzODMsImlhdCI6MTc0NTU1ODM4MywiYXV0aF92ZXIiOiJ2NCJ9.fvXTfRDYhlk21EY-ngAXbQMgYM9f-rFYPBa_GMV3JDz3cy9wwGfPTnF-VO0WkpxzpPdbG1ZX0HAdIkT4kF873ee2d-g6-JeuIEy0SFcTMpdYWXnlOfsuZlFIkzCm0OB_mlnNo_wxXHvjHM_dFDF-SfK2r9_ga8yLOXDfLJeA4XUYGwwsG3XT9x5Vy8RlUcF2aeuf-2bXdLSD2NGssZh18RTayV2CNtGuX0kj-nABVVTzLWUqbwKSrIVXjlS76zxl3SisUW_pz97iM98yLLRdpe_56_VDPzKEqVmn4bCyhhlAT1LEdu_uudlBY7hSUX0cJzcLAtj_4GReuLU9SnvQpw"
}
}
Response Body Sample (성공 - 유저 정보 없음) 아래와 같은 조건 만족 시, 반환되는 응답 데이터 예시입니다.
웹 로그인이 정상적으로 완료된 경우 인증 서버에 PlayerID가 생성되어 있지 않더라도, 개발사에서는 IdP 식별자(idp_index
, idp_user_id
) 값을 개발사의 사용자 계정 식별자로 활용하여 로그인 처리를 할 수 있습니다. 단, 유저 정보 없이 로그인 된 경우에는 PlayerID가 없기 때문에 로그인 유지 (SSO) 은 사용할 수 없습니다. {
"code" : 100 ,
"appid" : "com.com2us.hivesdk.ios.community.global.normal" ,
"idp_index" : 3 ,
"idp_user_id" : "105213591741718897220" ,
"enc_idp" : "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW"
}
Response Body Sample (실패) 아래와 같은 조건 만족 시, 반환되는 응답 데이터 예시입니다.
외부 PC 자동 로그인 토큰 발급 Hive 크로스플레이 런처 실행 시, 자동 로그인을 위해 해당 토큰 값(web_idp_token)을 전달합니다. web_idp_token은 일회성 토큰으로, 게임 실행 시마다 신규로 획득 필요합니다. Note Request 전달하는 enc_idp 값은 보안상 외부에 노출되지 않도록 유의하세요. API 호출 시 서버 to 서버 적용 필수입니다. Request URL Request Body 필드명 타입 설명 필수 여부 appid String 앱 아이디 Y enc_idp String IdP 정보 암호화한 키 Y
Request Body Example {
"appid" : "com.com2us.hivesdk.ios.community.global.normal" ,
"enc_idp" : "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW"
}
Response Body 필드명 타입 설명 비고 result_code Integer 결과 코드 result_msg String 결과 메시지 data JSON 결과 데이터 data.web_idp_token String 외부 PC 자동 로그인 토큰
Response Body Sample {
"result_code" : 0 ,
"result_msg" : "SUCCESS" ,
"data" : {
"web_idp_token" : "c47e61856f04f0a6194ddcbabca70a7f10552d044181386e625676fd07a63aee5d2b162a78a55bad350ed58fb07b79be8fea1c786108307f32b602019f31ac8d"
}
}
결과 코드 result_code 설명 0 성공 4000 유효하지 않은 요청 파라미터 4012 enc_idp 복호화 오류