AOS(구글)에서 불규칙한 데이터 받아오기 실패 문제

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.9.1
  • 프로젝트명 : 퇴마사 디펜스
  • 스테이터스 코드 : 401
  • 에러 코드 :
  • 에러 메시지 :
    2023-01-19 16:19:36.899 16341-16440/? I/Unity: UpdateToBackend 2023-01-14T05:20:31.168Z
    UserData:UpdateToBackend()
    BeforeLobby:GetMyDataCallbackAction(BackendReturnObject)
    <>c__DisplayClass50_0:b__1()
    System.Action:Invoke()
    BeforeLobby:Update()
    2023-01-19 16:19:37.233 16341-16440/? I/Unity: nickName= BHHWVV
    BeforeLobby:ToNextScene()
    BeforeLobby:GetMyDataCallbackAction(BackendReturnObject)
    <>c__DisplayClass50_0:b__1()
    System.Action:Invoke()
    BeforeLobby:Update()
    2023-01-19 16:19:37.243 16341-17225/? I/Unity: @@Update Result res statusCode : 401
    errorCode : BadUnauthorizedException
    message : bad bad,accessToken,잘못된,accessToken,입니다, 잘못된 bad,accessToken,잘못된,accessToken,입니다 입니다
    <>c:b__159_0(BackendReturnObject)
    BackEnd.BackendCallback:Invoke(BackendReturnObject)
    BackEnd.Game.GameInfo.#eRb:#y()
    System.Threading.ContextCallback:Invoke(Object)
    System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
    System.Runtime.CompilerServices.MoveNextRunner:Run()
    System.Action:Invoke()
    System.Threading.Tasks.AwaitTaskContinuation:RunOrScheduleAction(Action, Boolean, Task&)
    System.Threading.Tasks.Task:FinishContinuations()
    System.Threading.Tasks.Task1:TrySetResult(TResult) System.Runtime.CompilerServices.AsyncTaskMethodBuilder1:SetResult(TResult)
    #Gj.#DSb:#y()
    System.Threading.ContextCallback:Invoke(Object)
    System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
    System.Runtime.CompilerServices.

GPGS 로그인 시에만 보고되는 현상입니다.

간헐적으로 서버로부터 유저 데이터를 받아오는 과정을 실패합니다.

토큰 불일치로 인해 발생하는 현상으로 보이며, 로그인 2~3회 재시도 후에 정상 접속이 됩니다.

다만 일부 유저는 앱을 완전히 재설치하기 전까지 문제가 반복된다고 문의하고 있습니다.

이 현상에 대한 일반적인 원인이나 개선 방안을 알 수 있겠습니까?

안녕하세요 개발자님,
확인 시 Backend.BMember.UpdateFederationEmail 함수 요청으로 인해 발생하는 현상으로 확인됩니다.

Backend.BMember.UpdateFederationEmail 함수 요청 시, 뒤끝이 아닌 구글의 accessToken을 사용합니다.
이 때, 구글의 accessToken이 유효하지 않다면 bad aaccessToken 에러가 발생되고
현재 SDK 상 자동 리프레시 기능은 bad accessToken 에러 발생 시 호출되기 때문에 구글 토큰에서 발생하는 에러이더라도 조건에 해당되어 호출이 이루어지는 상황입니다.

다음 방법들 중 하나의 방법을 선택하여 대응이 가능합니다.

  1. UpdateFederationEmail 를 제거하고, Backend.BMember.AuthorizeFederation 함수 요청 시 다음 내용을 적용하여 이메일 정보를 받을 수 있도록 조치
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration
         .Builder()
         .RequestServerAuthCode(false)
         .RequestEmail() // 이메일 권한을 요구하기 위해 추가해야 합니다.
         .RequestIdToken()
         .Build();
    
  2. 자동 리프레시 토큰 기능 비활성화
  3. 추후 업데이트 되는 SDK 5.9.3 를 이용
    (구글 관련 토큰 에러 발생시에도 토큰 자동 재발급 기능이 작동하던 문제를 수정하여 업데이트될 예정)

답변 감사드립니다.

SDK 5.9.3 버전의 배포일을 알 수 있겠습니까?

안녕하세요 개발자님
SDK 5.9.3 버전의 업데이트 배포일은 1월 30일로 예정되어 있습니다.
감사합니다. :D

저희가 이번 주에 업데이트가 예정되어 있어, 이번주에 해당 문제에 대한 조치가 필요한 상황입니다.

2번 자동 리프레시 토큰 기능 비활성화는 어떻게 구현할 수 있는지 알려주실 수 있나요?

유니티 뒤끝 인스펙터 창의 Error Handling 기능 중
Auto Refresh Token 기능을 해제하고 이용해주시면 됩니다.

단, 이 경우 아래 에러에 대한 자동 처리가 이루어지지 않기에,
에러 발생에 따른 대응 이 준비되어야 합니다.

statusCode : 401
errorCode : BadUnauthorizedException
message : bad bad,accessToken,,잘못된,accessToken,입니다, 잘못된 bad,accessToken,,잘못된,accessToken,입니다 입니다