고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.
커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.
문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.
- 뒤끝 SDK 버전 : 5.16.2
- 프로젝트명 : WordMatching
메시지: The given key ‘error’ was not present in the dictionary.
상태코드: 401
에러코드: GoogleParseException
안녕하세요, GPGSv2 로그인 관련하여 막히는 부분이 있어 질문 남깁니다.
현재 GPGSv2 플러그인 도입을 진행하면서 다음과 같은 프로세스로 개발하였습니다.
- 초기화
- GPGS 로그인 진행
- 파이어베이스 토큰 인증
- 뒤끝 토큰 수령(GetGPGS2AccessToken)
- 뒤끝 GPGS 인증
현재 1번부터 3번까지 로그를 찍어가며 잘되는건 확인하였지만,
현재 4번에서 문제가 생겨 뒤끝에 유저가 가입되지 않는 상태입니다.
internal void GetAccessToken()
{
PlayGamesPlatform.Instance.RequestServerSideAccess(true, code =>
{
OnLoginAttemptComplete?.Invoke($"GPGS 인증 코드: {code}");
Debug.Log("code: " + code);
if (string.IsNullOrEmpty(code))
{
OnLoginAttemptComplete?.Invoke("GPGS 인증 코드 획득 실패");
return;
}
// 1단계: Firebase 인증
var credential = PlayGamesAuthProvider.GetCredential(code);
auth.SignInWithCredentialAsync(credential).ContinueWithOnMainThread(task =>
{
if (task.IsFaulted)
{
OnLoginAttemptComplete?.Invoke($"Firebase 인증 실패: {task.Exception?.Message}");
return;
}
user = task.Result;
OnLoginAttemptComplete?.Invoke($"Firebase 인증 성공! UID: {user.UserId}");
// 2단계: Firebase 토큰 획득
user.TokenAsync(false).ContinueWithOnMainThread(tokenTask =>
{
if (tokenTask.IsFaulted)
{
OnLoginAttemptComplete?.Invoke($"Firebase 토큰 획득 실패: {tokenTask.Exception?.Message}");
return;
}
Backend.BMember.AuthorizeFederation(code,FederationType.GPGS2,callback=>{
if(callback.IsSuccess()){
bool isNewUser = callback.GetStatusCode() == "201";
OnLoginAttemptComplete?.Invoke("모든 인증 완료! (Firebase + 뒤끝)");
if(isNewUser){
OnLoginAttemptComplete?.Invoke("새로운 유저입니다.");
}
}else{
OnLoginAttemptComplete?.Invoke($"뒤끝 인증 실패: {callback.GetMessage()}");
}
});
// 3단계: 뒤끝 인증 시도
Backend.BMember.GetGPGS2AccessToken(code, googleCallback =>
{
if (!googleCallback.IsSuccess())
{
Debug.Log("뒤끝 토큰 획득 실패\n" +
$"메시지: {googleCallback.GetMessage()}\n" +
$"상태코드: {googleCallback.GetStatusCode()}\n" +
$"에러코드: {googleCallback.GetErrorCode()}");
OnLoginAttemptComplete?.Invoke($"뒤끝 토큰 획득 실패\n" +
$"메시지: {googleCallback.GetMessage()}\n" +
$"상태코드: {googleCallback.GetStatusCode()}\n" +
$"에러코드: {googleCallback.GetErrorCode()}");
return;
}
try
{
string accessToken = googleCallback.GetReturnValuetoJSON()["access_token"].ToString();
OnLoginAttemptComplete?.Invoke($"뒤끝 액세스 토큰: {accessToken}");
// 3단계: 뒤끝 GPGS 인증
Backend.BMember.AuthorizeFederation(accessToken, FederationType.GPGS2, callback =>
{
if (!callback.IsSuccess())
{
OnLoginAttemptComplete?.Invoke($"뒤끝 인증 실패: {callback.GetMessage()}");
return;
}
OnLoginAttemptComplete?.Invoke($"모든 인증 완료! (Firebase + 뒤끝)");
// 성공 시 추가 작업
bool isNewUser = callback.GetStatusCode() == "201";
if (isNewUser)
{
OnLoginAttemptComplete?.Invoke("새로운 유저입니다.");
}
});
}
catch (Exception e)
{
OnLoginAttemptComplete?.Invoke($"토큰 처리 중 에러: {e.Message}\n스택트레이스: {e.StackTrace}");
}
});
});
});
});
}
!googleCallback.IsSuccess() 계속 여기에 걸려서 실패 로그가 찍힙니다.
구글에서 code는 잘 받아와지지만, 해당 코드로 AccessToken을 요청할때
메시지: The given key ‘error’ was not present in the dictionary.
상태코드: 401
에러코드: GoogleParseException
다음과 같은 메세지가 뜹니다.
해결 방법이 있을까요…