랭킹 UpdateUserScore 함수 문의

문의를 남기실 경우 다음 항목을 작성해 주시면 빠른 답변 처리에 도움이 됩니다.

  • 프로젝트명 : 슈퍼마이티캣
  • 뒤끝SDK 버전 : 5.4.1
  • 에러 코드 : 404

에디터에서 점수가 올라가는걸 확인하고 안드로이드로 변경했을때 다음과 같은 에러코드가 발생합니다.

statusCode : 404
errorCode : NotFoundException
message : user data not found, user data을(를) 찾을 수 없습니다

에러가 발생한 부분은 UpdateUserScore를 다음과 같이 사용했습니다.

404에러와 관련해서 2가지 정도 염려되는 부분이 있었습니다.

  1. rowinDate 값
    다음 화면에서 생성을 눌러서 inDate값을 받아와서 입력했는데 이렇게 얻는게 맞는건가요? 값을 테이블로 넘겨주면 indate값을 확인할 수 있다는 다른 답변을 봤는데, 값을 넣기 위해선 UpdateUserScore를 활용해야하는 것 같아서 indate 값을 얻는 일반적인 방법이 무엇인지 확인하기 어려웠습니다.

2.페더레이션 로그인
구글플레이로 로그인을 했는데요. 회원번호는 c9163cf0-9e67-11eb-a13d-abea80979769 입니다.
몇시간 전엔 정상적으로 로그인이 되었는데, 지금은 아래와 같이 실패가 되었습니다.

2021-04-16 19:30:09.771 25653 27033 Info Unity 구글플레이 로그인이 됬지만 문제가 있다.statusCode : 401
2021-04-16 19:30:09.771 25653 27033 Info Unity errorCode : BadUnauthorizedException
2021-04-16 19:30:09.771 25653 27033 Info Unity message : bad bad accessToken, 잘못된 bad accessToken 입니다


랭킹 점수 등록 테스트할땐 BRO.isSuccess() == false일때, 게스트 로그인을 하는 코드가 있었습니다. 뒤늦게 확인하고 콘솔에서 게스트 로그인된 유저 기록은 삭제했지만 이부분이 해결되지 않네요. 페더레이션 로그인이 정상적이지 못해서 랭킹 점수 올리기가 안되는건가 그런 생각도 됩니다.

두서없이 적었는데 설명이 더 필요하거나 문의사항 있으시다면 편하게 말씀 부탁드립니다.
감사합니다.

안녕하세요 개발자님.

statusCode : 404
errorCode : NotFoundException
message : user data not found, user data을(를) 찾을 수 없습니다

해당 에러가 리턴되는 이유는 데이터를 넣은 유저 de8f64b0…와 안드로이드로 로그인한 유저가 서로 다른 유저이기 때문에 발생하는 에러로 추정됩니다.
해당 테이블에는 안드로이드로 로그인한 유저의 데이터가 없기 때문에 해당 에러가 리턴되는 걸로 추정됩니다.


rowindate는 게임 정보 관리의 함수중 데이터 삽입 함수(Backend.GameData.Insert)를 호출하여 성공하면 리턴값으로 삽입 성공한 데이터의 rowInDate를 리턴합니다. 리턴된 indate를 이용하여 유저 랭킹을 업데이트 해주시면 됩니다.

statusCode : 200
message : Success
returnValue : {“inDate”:“2020-06-10T09:26:21.738Z”}

만약 데이터가 이미 삽입되어 있을 경우에는 내 게임 정보 조회 기능 (GameData.GetMyData)를 이용하여 삽입되어있는 해당 유저의 데이터의 inDate를 찾아 대입하시면 됩니다.

아래와 같은 예시로 게임 정보 삽입 - 삽입된 데이터의 inDate 추출 - 해당 inDate로 랭킹 Update를 할 수 있으니 참고해주시면 감사하겠습니다.

Param param = new Param();
param.Add(“score”,_score);
var bro = Backend.GameData.Insert(“테이블 이름”, param);
string inDate = bro.GetInDate();
Backend.Rank.URank.UpdateUserScore(“랭킹 uuid”, “테이블 이름”,inDate,param);

GPGS 로그인의 경우,
GPGS 로그인 성공후 리턴되는 구글의 토큰이 잘못되어있거나
뒤끝의 AuthorizeFederation() 함수내에 잘못된 값을 보내어 발생하는 걸로 추정합니다.

보다 자세한 답변을 위해 GetTokens()의 내부 코드를 공유해주시면 감사하겠습니다.

안녕하세요 개발자님 답변주셔서 감사합니다!

려주신 inDate로 스코어 올리기가 정상적으로 성공하였습니다 감사합니다.
토큰 관련 문의사항이 있었는데 확인해봤을때, 토큰을 포함해서 GPGS를 호출하지 않아서 발생한 것 같습니다. 그래서 튜토리얼에 나와있는 아래 코드로 시도해봤는데요.

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration

.Builder()
.RequestServerAuthCode(false)
.RequestIdToken()
.Build();
//커스텀된 정보로 GPGS 초기화
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.DebugLogEnabled = false; // 디버그 로그를 보고싶지 않다면 false로 바꿔주세요.
//GPGS 시작.
PlayGamesPlatform.Activate();

다음과 같은 에러가 발생하고 정상적으로 GPGS 로그인이 안되는 것 같습니다. 로그캣도 첨부하였습니다.

2021-04-20 20:18:22.871 13522 16361 Error SDK OfferDeviceInfo 생성자
2021-04-20 20:18:22.871 13522 16361 Error SDK OfferDeviceInfo getInstance

혹시 해결방안이 있으면 조언 부탁드립니다. 감사합니다.

OfferDeviceInfo에서 발생하는 "생성자"와 "getInstance"는 Error로 표시되지만 정상작동하는것이므로, 신경쓰실 필요는 없습니다.

GPGS의 로그인이 정상적으로 되지 않아 Token값이 출력이 안될 경우 다음과 같은 사항을 체크해주시면 감사하겠습니다.

  1. 구글 클라우드 플랫폼에 테스트 사용자가 정상적으로 등록되어 있는지(3-1 내용)
  2. 구글 플레이 콘솔 내에 등록된 테스트 사용자가 1의 사용자와 동일한지(3-2 내용)
  3. 구글 플레이 콘솔 > Play 게임 서비스에 등록된 사용자 인증 정보에 2개의 OAuth 클라이언트가 등록되어 있는지(2-5 내용)
  4. 유니티에 등록한 구글 플레이 콘솔 내에 정보들(Web Client, 리소스)이 올바른지(4-1 내용)

추가적으로 구글 클라우드 플랫폼 > 해당 프로젝트 > OAuth 동의 화면 > 게시 상태 > 테스트의 "앱 게시"를 눌러 게시하면 된다고 다른 개발자님들의 제보가 있으니 해당 부분도 참고해주시면 감사하겠습니다.