BackendReturnObject 파싱 관련

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

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

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

  • 뒤끝 SDK 버전 : 5.18.2
  • 뒤끝 펑션 버전 : 1.0.2
  • 프로젝트명 : OrcWar_Dev
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

커스텀 펑션에서 받은 BackendReturnObject를 JsonMapper.ToObject 를 사용해 파싱하려 하는데
계속 실패합니다. 혹시 예제 코드 같은게 있을까요?

안녕하세요 개발자님,
뒤끝 펑션은 개발자 문서 내 제공중인 템플릿 및 튜토리얼(에코함수 및 영수증검증)만이 제공중에 있습니다.
이외의 별도의 예제코드는 제공되고 있지 않은 점 양해 바랍니다.

답변 감사합니다.
다른 질문인데 커스텀 펑션 타다보면 {“result”:""{\“ok\”:false,\“error\”:\“LOAD_USER_DETAIL_FAILED\”,\“statusCode\”:\“401\”}""} 이런식으로 401 에러가 날아오는데 message 확인해보면 잘못된 accessToken 이라고 뜨더라구요. 이거 이유가 뭔가요? 동작은 커스텀 펑션 호출하고 유니티 끄고 하는 것 밖에 없는데… (error 내용은 제가 임의로 작성한 내용입니다. USER_DETAIL 이라는 게임정보를 가져오는데 실패한 겁니다.)

확인해주신 것과 같이 accessToken 에러가 발생한 이력으로 확인됩니다.
호출시 확인되는 accessToken이 올바르지 않거나 만료된 상황에 따라 에러가 발생한 것이기에 관련하여 확인해 주시면 감사하겠습니다.

Backend.BMember.LoginWithTheBackendToken 을 통해서 로그인이 성공적으로 되어도 accessToken이 만료되기도 하나요?

로그인이 성공하더라도,
타 기기에서의 로그인, 토큰 갱신, 로그아웃 함수를 비롯한 토큰이 삭제/만료되는 함수들의 호출, 유효시간 경과 등 여러 상황에 따라 토큰이 만료되거나 삭제되는 등의 상황이 발생할 수 있습니다.

로그아웃도 없고, 에디터로 실행 중이라 기기변경도 없고, 토큰 갱신도 따로 진행한 것 없고Backend.BMember.LoginWithTheBackendToken을 통해서 로그인 하고 펑션 테스트 (로그인 이후 여러 게임 정보를 받아오는 펑션) 과정만 계속 반복 중인데 토큰이 만료될 이유를 모르겠어서요… 커스텀 펑션 쪽에서는 GameData Get 하는 것하고 Insert 하는 작업만 진행중인데 여기서 토큰이 삭제되는 일이 발생할까요?

뒤끝의 로그인상 로그인 직후는 토큰이 한차례 갱신이 이루어지도록 되어있습니다.
만약 로그인과 함께 즉시 호출이 이루어지는 것이라면 갱신 이전의 토큰 정보를 통해 펑션이 요청되는 상황으로 예상됩니다.

Backend.BMember.LoginWithTheBackendToken() 에서 BackendReturnObject.IsSuccess() 떨어지는 것 확인 한 후에 호출하는데 좀 더 대기해야할 필요가 있을까요?

보다 정확한 확인을 위해 관련 펑션 코드를 공유해주실 수 있을까요?

해당 펑션 코드입니다

좋아요 1

관련하여 확인 후 안내드릴 수 있도록 하겠습니다.
다소 시간이 소요될 수 있는 점 양해바랍니다.

공유해주신 코드 로직으로 토큰 로그인 직후 펑션을 호출하여 테스트 해보았는데 이상이나 에러 발생 없이 정상적으로 작동하였습니다.
우선은 펑션 프로젝트 내에 bin폴더를 삭제 후 다시 평션 파일을 빌드하여 deploy를 해보시거나 펑션을 재설치 후 다시 시도 해봐 주시면 감사하겠습니다.
위와같이 진행하셨음에도 로그인 후 펑션을 호출하기 까지의 흐름을 파악 할 수 있는 전체적인 코드가 필요할 것 같습니다.

음… 재빌드 후 배포해봐도 여전히 발생중입니다.

저 같은 경우 발생하는 경우가

  1. 유니티 디버깅 모드로 실행 후 로그인 및 펑션 콜
  2. 제대로된 값이 내려오는 걸 확인
  3. 디버깅 확인 후 에디터 종료
  4. 에디터 재실행 후 로그인 및 펑션 콜
  5. Backend.GameData.GetMyData 부분에서 accessToken 에러 (401) 발생
  6. 이후 한동안 지속적인 에러 발생 후 어느 시점이 되면 정상 접속이 됌.
    (혹은 재빌드 후 배포후 첫 접속 시)
  7. 에러 재발생

    (디버깅 로그 추가)

이런식으로 계속 무한 반복 되는 중입니다.
일단 유니티 쪽 코드 흐름 빠르게 정리해서 알려드리겠습니다

로그인 UI 진입 점 입니다.
Scene 시작시 준비가 되면 Show를 호출하는 구조입니다.

유니티 내 펑션 콜 부분입니다.

펑션 코드도 혹시 다시 필요하시면 알려주세요

좋아요 1

확인 시 말씀해주신 것처럼 Show 부분에서 펑션을 호출하고 있는것으로 확인하였습니다.
혹시 Show를 짧은 시간내에 두번 호출하고있거나 Show 말고 다른곳에서 Show에서 호출한 펑션의 응답이 오기전에 다시 로그인 또는 토큰 갱신 등 토큰 정보가 변경될 수 있는 시도가 이루어지는 부분이 있는지 확인해 주세요.
호출한 펑션의 응답을 받기전에 토큰 정보가 변경된다면 펑션 실행에 영향을 줄 수 있습니다.

그냥 새로운 Scene 만들어서 해당 코드 붙이고 실행해도 똑같은 증상이 일어나고 있습니다.
이것때문에 진행이 안되서 갑갑하네요 ㅠㅠㅠ
되려면 아이에 안되던가 한 번은 되고 이후로 안되니…


펑션 Deploy 이후 최초 시도는 성공

재실행 시 실패

마지막 남겨주신 로그를 바탕으로 서버 호출 이력 정보 확인 시,
2025-10-22 06:05:47.245000 UTC 시점에 토큰 갱신 이력이 확인됩니다.

작성하신 펑션 함수에서
초기화하는 부분에 아래와 같이 조건문으로 펑션이 초기화 안되었을때만 초기화해서 동작하도록 하셨는데

            try
            {
                // Initialize BackendFunction API
                if (Backend.IsInitialized == false)
                    Backend.Initialize(ref stream);
            }

이 부분에서 if문을 빼고 펑션을 구성하셔야합니다.
그렇지 않으면 새로 초기화가 되지않아 다시 로그인 했을 때 이전 액세스토큰이 남아서
현재 액세스토큰과 다르기때문에 에러가 발생하는 현상이 나타납니다.

아, 저게 문제였군요… 감사합니다. 확인해보겠습니다.