Firebase 인증을 사용하면 사용자가 이메일 주소와 비밀번호를 사용하여 Firebase에 인증하고 앱의 비밀번호 기반 계정을 관리할 수 있습니다.
시작하기 전에
Firebase 인증 을 사용하려면 먼저 다음을 수행해야 합니다.
Unity 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.
Unity 프로젝트에서 이미 Firebase를 사용하고 있다면 이미 Firebase용으로 등록 및 구성된 것입니다.
Unity 프로젝트가 없는 경우 샘플 앱 을 다운로드할 수 있습니다.
Unity 프로젝트에 Firebase Unity SDK (특히
FirebaseAuth.unitypackage
)를 추가합니다.
Unity 프로젝트에 Firebase를 추가하려면 Firebase 콘솔 과 열려 있는 Unity 프로젝트 모두에서 작업이 필요합니다(예: 콘솔에서 Firebase 구성 파일을 다운로드한 다음 Unity 프로젝트로 이동).
Firebase.Auth.FirebaseAuth
클래스에 액세스
FirebaseAuth
클래스는 모든 API 호출의 게이트웨이입니다. FirebaseAuth.DefaultInstance 를 통해 액세스할 수 있습니다.Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
암호 기반 계정 만들기
비밀번호를 사용하여 새 사용자 계정을 만들려면 앱의 로그인 코드에서 다음 단계를 완료하세요.
- 새 사용자가 앱의 가입 양식을 사용하여 가입하면 새 계정의 암호가 올바르게 입력되었고 복잡성 요구 사항을 충족하는지 확인하는 등 앱에서 요구하는 새 계정 확인 단계를 완료하십시오.
- 새 사용자의 이메일 주소와 비밀번호를
FirebaseAuth.CreateUserWithEmailAndPassword
에 전달하여 새 계정을 만듭니다.auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception); return; } // Firebase user has been created. Firebase.Auth.FirebaseUser newUser = task.Result; Debug.LogFormat("Firebase user created successfully: {0} ({1})", newUser.DisplayName, newUser.UserId); });
이메일 주소와 비밀번호로 사용자 로그인
암호로 사용자를 로그인하는 단계는 새 계정을 만드는 단계와 유사합니다. 앱의 로그인 기능에서 다음을 수행합니다.
- 사용자가 앱에 로그인하면 사용자의 이메일 주소와 비밀번호를
FirebaseAuth.SignInWithEmailAndPassword
에 전달합니다.auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithEmailAndPasswordAsync 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.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password); auth.SignInWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCredentialAsync 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 인증 방법은 이메일 주소를 등록해야 할 때(예: 이메일 주소와 비밀번호로 로그인할 때) 등록을 취소하거나 사용하지 않아야 할 때(예: 사용자의 이메일 주소를 변경할 때). 이는 사용자에게 특정 해결 방법을 제안하는 데 도움이 될 수 있지만 악의적인 행위자가 사용자가 등록한 이메일 주소를 발견하는 데 악용될 수도 있습니다.
이 위험을 완화하려면 Google Cloud gcloud
도구를 사용하여 프로젝트에 대한 이메일 열거 보호를 사용 설정 하는 것이 좋습니다. 이 기능을 활성화하면 Firebase 인증의 오류 보고 동작이 변경됩니다. 앱이 보다 구체적인 오류에 의존하지 않는지 확인하세요.
다음 단계
사용자가 처음으로 로그인하면 새 사용자 계정이 생성되고 사용자가 로그인할 때 사용한 자격 증명(즉, 사용자 이름과 암호, 전화 번호 또는 인증 공급자 정보)에 연결됩니다. 이 새 계정은 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();