목차

반응형

1. 개요

2. 중복 로그인 막는 원리

3. 코드

4. 유의사항

 

 

 

 

 

 

 

 

1. 개요

어느 정도 사이즈가 있어서 파이어베이스 로그인을 필요로 하는 게임을 만드는데 2개의 디바이스에서 동일한 소셜 정보로 순차대로 로그인하면 별도의 처리가 없으면 로그인이 잘만 된다.

악용하는 유저도 있고 수많은 버그를 불러일으키는 행위이기 때문에 예방을 필요로 한다.

골치가 아프다. 어떻게 해야지 중복 로그인을 막을 수 있을까?

파이어베이스 실시간 DB의 onvaluechanged 기능을 사옹하면 쉽게 처리 가능하다.

 

 

 

2. 중복 로그인 막는 원리

중복처리를 막기 위한 플로우는 다음과 같다.

 

1. 유저의 소셜 로그인(구글, 애플)

2. 유저 개인 정보를 보관하는 곳에 유저의 device id를 업데이트

3. 유저의 device id에 onvaluechange 트리거를 연결

4. 트리거 작동시 바뀐 값과 현재 유저의 device id가 같은지 확인, 다르면 중복 로그인 팝업과 함께 게임 종료 처리

 

 

3. 코드

1,2 단계는 생략하고 3,4번 코드만 올리도록 하겠다.

 

3. 유저의 device id에 onvaluechange 트리거를 연결하는 코드

DatabaseReference DBRef;

 

//DBRef는 본인 상황에 맞게 적절한 위치를 가져와야 한다.

DBRef = FirebaseDatabase.GetInstance("DB 이름").RootReference;

 

DBRef.Child("Device ID의 위치").ValueChanged += LogoutFunction;

 

4. 트리거 작동 시 바뀐 값과 현재 유저의 device id가 같은지 확인, 다르면 중복 로그인 팝업과 함께 게임 종료 처리

private void LogoutFunction(object sender, ValueChangedEventArgs args)
{
  if (args.DatabaseError != null) 
  {
      Debug.LogError(args.DatabaseError.Message);
      return;
  }

  //device id와 받은 값이 다른 경우
  if (SystemInfo.deviceUniqueIdentifier != (string) args.Snapshot.Value) 
  {
  	//로그아웃 처리
  }
}

 

 

4. 유의사항

당연하지만 유저가 device id 값을 바꾸기 전에 이벤트를 미리 걸어버리면 안 된다.

반응형