Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

커스텀 인증 시스템 및 Unity를 사용하여 Firebase로 인증

사용자가 성공적으로 로그인할 때 사용자 정의 서명 토큰을 생성하도록 인증 서버를 수정하여 Firebase 인증을 사용자 정의 인증 시스템과 통합할 수 있습니다. 앱은 이 토큰을 수신하고 Firebase에 인증하는 데 사용합니다.

시작하기 전에

  1. Firebase 인증 을 사용하려면 먼저 다음을 수행해야 합니다.

    • Firebase 프로젝트에 Unity 프로젝트를 등록합니다.
    • Firebase Unity SDK (특히 FirebaseAuth.unitypackage )를 Unity 프로젝트에 추가합니다.

    Unity 프로젝트에 Firebase 추가 에서 이러한 초기 설정 단계에 대한 자세한 지침을 찾아보세요.

  2. 프로젝트의 서버 키를 가져옵니다.
    1. 프로젝트 설정에서 서비스 계정 페이지로 이동합니다.
    2. 서비스 계정 페이지의 Firebase Admin SDK 섹션 하단에서 새 개인 키 생성 을 클릭합니다.
    3. 새 서비스 계정의 공개/개인 키 쌍이 자동으로 컴퓨터에 저장됩니다. 이 파일을 인증 서버에 복사하십시오.

Firebase로 인증

FirebaseAuth 클래스는 모든 API 호출을 위한 게이트웨이입니다. FirebaseAuth.DefaultInstance 를 통해 액세스할 수 있습니다.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

인증 서버의 토큰으로 Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync 를 호출합니다.

  1. 사용자가 앱에 로그인할 때 로그인 자격 증명(예: 사용자 이름 및 비밀번호)을 인증 서버로 보냅니다. 서버는 자격 증명을 확인하고 유효한 경우 사용자 지정 토큰 을 반환합니다.
  2. 인증 서버에서 맞춤 토큰을 받은 후 Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync 에 전달하여 사용자 로그인:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

다음 단계

사용자가 처음으로 로그인하면 새 사용자 계정이 생성되어 사용자가 로그인한 자격 증명(즉, 사용자 이름 및 암호, 전화 번호 또는 인증 공급자 정보)에 연결됩니다. 이 새 계정은 Firebase 프로젝트의 일부로 저장되며 사용자 로그인 방식에 관계없이 프로젝트의 모든 앱에서 사용자를 식별하는 데 사용할 수 있습니다.

  • 앱에서 Firebase.Auth.FirebaseUser 객체에서 사용자의 기본 프로필 정보를 가져올 수 있습니다.

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • Firebase 실시간 데이터베이스 및 Cloud Storage 보안 규칙 에서 auth 변수에서 로그인한 사용자의 고유 사용자 ID를 가져와 사용자가 액세스할 수 있는 데이터를 제어하는 ​​데 사용할 수 있습니다.

인증 공급자 자격 증명을 기존 사용자 계정에 연결하여 사용자가 여러 인증 공급자를 사용하여 앱에 로그인하도록 허용할 수 있습니다.

사용자를 로그아웃하려면 SignOut() 을 호출하십시오.

auth.SignOut();