Firebase Authentication을 사용하면 임시 익명 계정을 생성 및 사용하여 Firebase에 인증할 수 있습니다. 이 임시 익명 계정을 통해 아직 앱에 가입하지 않은 사용자들도 보안 규칙으로 보호받는 데이터를 사용할 수 있습니다. 익명 사용자가 앱에 가입하기로 결정하면 이 사용자의 로그인 인증 정보를 해당 익명 계정에 연결하여 사용자가 추후 세션에서도 보호받는 데이터를 계속 사용하도록 할 수 있습니다.
시작하기 전에
- JavaScript 프로젝트에 Firebase를 추가합니다.
- 아직 Firebase 프로젝트에 앱을 연결하지 않았다면 Firebase Console에서 연결합니다.
- 다음과 같이 익명 인증을 사용 설정합니다.
    - Firebase Console에서 인증 섹션을 엽니다.
- 로그인 방법 페이지에서 익명 로그인 방법을 사용 설정합니다.
- 선택사항: 프로젝트를 Firebase Authentication with Identity Platform으로 업그레이드한 경우 자동 정리를 사용 설정할 수 있습니다. 이 설정을 사용하면 30일이 지난 익명 계정은 자동으로 삭제됩니다. 자동 정리가 사용 설정된 프로젝트에서는 익명 인증이 더 이상 사용량 한도 또는 결제 할당량에 포함되지 않습니다. 자동 정리를 참조하세요.
 
Firebase에 익명으로 인증
로그아웃 상태의 사용자가 Firebase 인증이 필요한 앱 기능을 사용할 때 다음 절차를 밟으면 사용자를 익명으로 로그인시킬 수 있습니다.
- signInAnonymously메서드 호출:이 단계에서 오류를 파악해서 처리할 수도 있습니다. 오류 코드 목록은 인증 참고 문서에서 확인할 수 있습니다.- Web- import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... }); - Web- firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... }); 
- signInAnonymously메서드가 오류 없이 실행을 마치면- onAuthStateChanged에 등록된 관찰자가 트리거되어- User객체에서 익명 사용자의 계정 데이터를 가져옵니다.- Web- import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } }); - Web- firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } }); 
익명 계정을 영구 계정으로 전환
익명 사용자가 앱에 가입하면 사용자가 가입 전에 하던 작업을 신규 계정에서 이어서 하게 할 수 있습니다. 예를 들면 사용자가 가입 전에 장바구니에 담은 물품이 신규 계정의 장바구니에 나타나도록 할 수 있습니다. 그러려면 다음 절차를 완료하세요.
- 사용자가 가입하면 사용자가 선택한 인증 제공업체의 로그인 과정을 진행하되 Auth.signInWith메서드 호출 전까지만 진행합니다. 예를 들어 사용자의 Google ID 토큰, Facebook 액세스 토큰 또는 이메일 주소와 비밀번호를 가져옵니다.
- 다음과 같이 새로운 인증 제공업체의 - AuthCredential을 가져옵니다.- Google 로그인- Web- import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token); - Web- var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token); - Facebook 로그인- Web- import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken); - Web- var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken); - 이메일-비밀번호 로그인- Web- import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password); - Web- var credential = firebase.auth.EmailAuthProvider.credential(email, password); 
- 다음과 같이 로그인한 사용자의 - link메서드에- AuthCredential객체를 전달합니다.- Web- import { getAuth, linkWithCredential } from "firebase/auth"; const auth = getAuth(); linkWithCredential(auth.currentUser, credential) .then((usercred) => { const user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); }); - Web- auth.currentUser.linkWithCredential(credential) .then((usercred) => { var user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); }); 
link 호출이 성공하면 사용자의 신규 계정에서 익명 계정의 Firebase 데이터에 액세스할 수 있습니다.
자동 정리
프로젝트를 Firebase Authentication with Identity Platform으로 업그레이드한 경우 Firebase Console에서 자동 정리를 사용 설정할 수 있습니다. 이 기능을 사용 설정하면 Firebase에서 30일이 지난 익명 계정을 자동으로 삭제할 수 있습니다. 자동 정리가 사용 설정된 프로젝트에서는 익명 인증이 사용량 한도 또는 결제 할당량에 포함되지 않습니다.
- 자동 정리를 사용 설정한 후 만든 익명 계정은 생성 후 30일이 지나면 언제든지 자동으로 삭제될 수 있습니다.
- 기존 익명 계정은 자동 정리를 사용 설정한 후 30일이 지나면 자동으로 삭제될 수 있습니다.
- 자동 정리를 사용 중지해도 삭제 예약된 익명 계정은 삭제가 예약된 상태로 유지됩니다.
- 익명 계정을 로그인 방법에 연결하여 '업그레이드'할 경우 계정이 자동으로 삭제되지 않습니다.
이 기능을 사용 설정하기 전에 영향을 받는 사용자 수를 확인하고 프로젝트를 Firebase Authentication with Identity Platform으로 업그레이드한 경우 Cloud Logging에서 is_anon으로 필터링할 수 있습니다.
다음 단계
이제 사용자가 Firebase에 인증할 수 있으므로 Firebase 규칙을 사용하여 Firebase 데이터베이스의 데이터에 대한 액세스를 제어할 수 있습니다.