안녕하세요 개발자님
우선 로그인시 async 함수를 사용하신다면 saveToken함수를 호출하고 계신가요??
해당 함수 호출 여부를 확인 부탁드리겠습니다.
뒤끝에서는 패킷의 변조 및 스니핑을 방지하기 위해 패킷을 암호화 하고 있고, 패킷의 정보와 암호화 정보가 일치하지 않는 경우 bad signature가 발생할 수 있습니다.
일반적인 경우 시그니처 에러가 발생하지 않지만,
다른 개발자분들이 많이 겪으신 현상 중 클라이언트 시간이 현재 서버 시간과 차이가 나는 경우 (1,2초 차이가 아닌 UTC 기준 10분 이상으로 텀이 긴 경우) 시그니처 에러가 발생한 경우가 있었습니다.
시간값이 클라이언트 로컬 시간인지 확인 부탁드리겠습니다.
동시에 여러 Async 함수를 호출하는 경우 401 bad signature와 500 에러가 발생할 수 있습니다.
클라이언트에서 데이터를 전송하고자 함수를 호출 시 해당 데이터는 바로 서버로 전송되는 것이 아닌
OS의 스케줄러에 따라 적절한 시점에 전송이 되게 됩니다.
일반적으로는 사람이 인지할 수 없을 정도로 짧은 시간 안에 전송되지만, 이 경우에도 바로 전송되는 것이 아닌 잠시간의 대기시간이 존재합니다.
이 때 여러 Async 함수를 호출한 경우 여러개의 Async 함수가 동시에 서버로 요청을 보낼 수 있습니다.
이 경우 각 요청별로 사용해야 할 값이 중복되는 경우 1번째 요청에서 사용한 값이 2번째 요청에서도 필요한 경우 등 등의 경우에서
최종적 읽기 일관성이 보장이 안되어 요청들이 실패할 수 있습니다.
로그인의 경우 엑세스토큰, gamer_id 등이 다른 함수등에도 모두 사용되는 정보값이기 때문에 최종적 읽기 일관성이 보장이 안되어 요청들이 실패할 수 있습니다.
이 외에 서버에 순간적으로 로그인 요청이 몰리는 경우 500, Cannot read property ‘gamer_id’ of undefined 에러가 발생하는 것도 확인을 하였습니다.
해당 현상은 현재 지속적으로 픽스를 진행중입니다. 이용에 불편을 드려 죄송합니다.
마지막으로 토큰이 만료된 경우도 아니라 재로그인 시키기 애매하다고 말씀하셨는데
해당 현상이 발생하시는 경우에는 재로그인을 시키도록 플로우를 짜시면
유저입장에서는 곧바로 로그인을 시키면 되는 것이기 때문에 큰 혼란은 없을 것 같습니다.
새로 로그인을 한 경우 새로운 엑세스토큰이 발급됩니다.