시간이 흘러 문제가 발생함
↓문제 상황

결국은 스키마 URI를 통해 로그인 개발을 진행하였었다.
그런데 어떤 팀원이 기발한 생각을 들고 오심...
기존 로그인 플로우
1. 로그인 요청
빌드된 게임 프로그램에서 사용자가 로그인 버튼을 클릭하면, 게임은 로그인 웹사이트로 로그인 요청을 보냄.
2. 네이버 로그인
로그인 웹사이트에서는 사용자를 네이버 로그인 화면으로 리다이렉트하여 네이버 계정으로 인증을 진행.
3. 세션 생성 및 전달
사용자가 네이버 로그인에 성공하면, 네이버 서버는 세션을 생성하고 이를 서버에 전달.
** 세션이 아닌 인증정보를 가진 토큰을 반환(OAuth2.0 방식)
4. 세션 값 전달
서버는 생성된 세션 값을 포함한 스키마 URI를 사용하여 클라이언트(게임 프로그램)에 전달.
-> 전달받은 정보를 토대로 서버는 세션을 생성하여 반환
스키마 URI를 통한 게임 호출
클라이언트는 이 스키마 URI를 통해 게임 프로그램을 호출하고, 게임 프로그램은 URI로부터 전달된 세션 값을 받아 처리.
5. 레지스트리에 세션 값 저장
게임 프로그램은 받은 세션 값을 윈도우 레지스트리의 특정 경로에 저장.
6. 게임 재실행 및 세션 적용
게임 프로그램을 다시 재실행하여 실행될 때 레지스트리에 저장된 세션 값을 읽어들여 유저가 정상적으로 로그인된 상태에서 게임을 시작할 수 있도록함.
변경된 방식
3번까지는 그대로,
4. 로컬 서버 구동
로그인 씬에 들어왔을 때 로컬 서버를 구동, 이 로컬 서버는 세션 값을 수신하기 위한 목적으로 실행
5. 세션 값 전달
서버는 생성된 세션 값을 클라에서 구동된 로컬 서버의 주소(예: http://localhost: 포트번호)로 전송
6. 로컬 서버에서 세션 값 처리
클라의 로컬 서버는 서버로 부터 전달된 세션 값을 수신하고, 이를 PlayerPrefs의 Session(사용자 설정)에 저장
7. 게임 상태 유지 및 재실행
사용자가 게임을 재실행할 경우에도 저장된 세션 값을 사용하여 자동으로 로그인된 상태로 게임을 시작할 수 있음
즉 스키마 URI방식에서 게임 클라이언트가 로컬 서버를 구동하고, 이 로컬 서버를 통해 서버에서 넘겨주는 세션 값을 받는 것이다.
수신된 세션 값은 즉시 게임 프로그램에 적용되어 사용자의 로그인 상태를 유지한다.
에디터에서도 가능하기때문에 테스트에도 용이!
사실상 클라는 서버를 부를 뿐이고, 서버도 서버 구동하고 쿠키값 받는거라 간단해진다.
서버가 할게 조오오금 생긴 것 뿐...;;
'Unity' 카테고리의 다른 글
| [Unity] pc 게임 네이버 로그인 연동하기(1) (1) | 2024.09.21 |
|---|---|
| [Unity] VR visual studio code 연동 문제 해결 (0) | 2024.08.25 |