Firebase 인증을 사용해 임시 익명 계정을 생성하고 사용할 수 있습니다. 이 임시 익명 계정을 통해 아직 앱에 가입하지 않은 사용자들도 보안 규칙으로 보호받는 데이터를 사용할 수 있습니다. 익명 사용자가 앱에 가입하기로 결정하면
이 사용자의 로그인 인증 정보를 해당 익명 계정에 연결하여 사용자가 추후 세션에서도 보호받는 데이터를 계속 사용할 수 있습니다.
로그아웃 상태의 사용자가 Firebase 인증이 필요한 앱 기능을 사용할 때 signInAnonymously()를 호출하면 사용자를 익명으로 로그인 처리합니다.
try{finaluserCredential=awaitFirebaseAuth.instance.signInAnonymously();print("Signed in with temporary account.");}onFirebaseAuthExceptioncatch(e){switch(e.code){case"operation-not-allowed":print("Anonymous auth hasn't been enabled for this project.");break;default:print("Unknown error.");}}
익명 계정을 영구 계정으로 전환
익명 사용자가 앱에 가입하면 사용자가 가입 전에 하던 작업을 신규 계정에서 이어서 하게 할 수 있습니다. 예를 들면 사용자가 가입 전에 장바구니에 담은 물품이 신규 계정의 장바구니에 나타나도록 할 수 있습니다. 그러려면 다음 절차를 완료하세요.
사용자가 가입하면 사용자가 선택한 인증 제공업체의 로그인 과정을 진행하되 signInWith 메서드 호출 전까지만 진행합니다. 예를 들어 사용자의 Google ID 토큰, Facebook 액세스 토큰 또는 이메일 주소와 비밀번호를 가져옵니다.
다음과 같이 새로운 인증 제공업체의 Credential 객체를 가져옵니다.
// Google Sign-infinalcredential=GoogleAuthProvider.credential(idToken:idToken);// Email and password sign-infinalcredential=EmailAuthProvider.credential(email:emailAddress,password:password);// Etc.
다음과 같이 로그인한 사용자의 linkWithCredential() 메서드에 Credential 객체를 전달합니다.
try{finaluserCredential=awaitFirebaseAuth.instance.currentUser?.linkWithCredential(credential);}onFirebaseAuthExceptioncatch(e){switch(e.code){case"provider-already-linked":print("The provider has already been linked to the user.");break;case"invalid-credential":print("The provider's credential is not valid.");break;case"credential-already-in-use":print("The account corresponding to the credential already exists, ""or is already linked to a Firebase User.");break;// See the API reference for the full list of error codes.default:print("Unknown error.");}```
linkWithCredential() 호출이 성공하면 사용자의 신규 계정에서 익명 계정의 Firebase 데이터에 액세스할 수 있습니다.
다음 단계
사용자가 새 계정을 만들면 이 계정이 Firebase 프로젝트의 일부로 저장되며, 사용자가 사용한 로그인 방법과 관계없이 프로젝트의 모든 앱에서 사용자 식별에 사용될 수 있습니다.
앱의 User 객체에서 사용자의 기본 프로필 정보를 가져올 수 있습니다. 사용자 관리를 참조하세요.
Firebase 실시간 데이터베이스와 Cloud Storage 보안 규칙의 auth 변수에서 로그인한 사용자의 고유 사용자 ID를 가져온 후 이 ID를 사용해 사용자가 액세스할 수 있는 데이터를 관리할 수 있습니다.
[null,null,["최종 업데이트: 2025-08-04(UTC)"],[],[],null,["\u003cbr /\u003e\n\nYou can use Firebase Authentication to create and use temporary anonymous accounts\nto authenticate with Firebase. These temporary anonymous accounts can be used to\nallow users who haven't yet signed up to your app to work with data protected\nby security rules. If an anonymous user decides to sign up to your app, you can\n[link their sign-in credentials](/docs/auth/flutter/account-linking) to the anonymous account so\nthat they can continue to work with their protected data in future sessions.\n\nBefore you begin\n\n1. If you haven't already, follow the steps in the [Get started](/docs/auth/flutter/start) guide.\n\n2. Enable Anonymous sign-in:\n\n - In the Firebase console's **Authentication** section, open the [Sign in method](https://console.firebase.google.com/project/_/authentication/providers) page.\n - From the **Sign in method** page, enable the **Anonymous sign-in** method and click **Save**.\n\nAuthenticate with Firebase anonymously\n\nWhen a signed-out user uses an app feature that requires authentication with\nFirebase, sign in the user anonymously by calling `signInAnonymously()`: \n\n try {\n final userCredential =\n await FirebaseAuth.instance.signInAnonymously();\n print(\"Signed in with temporary account.\");\n } on FirebaseAuthException catch (e) {\n switch (e.code) {\n case \"operation-not-allowed\":\n print(\"Anonymous auth hasn't been enabled for this project.\");\n break;\n default:\n print(\"Unknown error.\");\n }\n }\n\n| **Note:** To protect your project from abuse, Firebase limits the number of new email/password and anonymous sign-ups that your application can have from the same IP address in a short period of time. You can request and schedule temporary changes to this quota from the [Firebase console](https://console.firebase.google.com/project/_/authentication/providers).\n\nConvert an anonymous account to a permanent account\n\nWhen an anonymous user signs up to your app, you might want to allow them to\ncontinue their work with their new account---for example, you might want to\nmake the items the user added to their shopping cart before they signed up\navailable in their new account's shopping cart. To do so, complete the following\nsteps:\n\n1. When the user signs up, complete the sign-in flow for the user's\n authentication provider up to, but not including, calling one of the\n `signInWith`- methods. For example, get the user's Google ID token,\n Facebook access token, or email address and password.\n\n2. Get a `Credential` object for the new authentication provider:\n\n // Google Sign-in\n final credential = GoogleAuthProvider.credential(idToken: idToken);\n\n // Email and password sign-in\n final credential =\n EmailAuthProvider.credential(email: emailAddress, password: password);\n\n // Etc.\n\n3. Pass the `Credential` object to the sign-in user's `linkWithCredential()`\n method:\n\n try {\n final userCredential = await FirebaseAuth.instance.currentUser\n ?.linkWithCredential(credential);\n } on FirebaseAuthException catch (e) {\n switch (e.code) {\n case \"provider-already-linked\":\n print(\"The provider has already been linked to the user.\");\n break;\n case \"invalid-credential\":\n print(\"The provider's credential is not valid.\");\n break;\n case \"credential-already-in-use\":\n print(\"The account corresponding to the credential already exists, \"\n \"or is already linked to a Firebase User.\");\n break;\n // See the API reference for the full list of error codes.\n default:\n print(\"Unknown error.\");\n }\n ```\n\nIf the call to `linkWithCredential()` succeeds, the user's new account can\naccess the anonymous account's Firebase data.\n| **Note:** This technique can also be used to [link any two accounts](/docs/auth/flutter/account-linking).\n\nNext steps\n\nAfter a user creates a new account, this account is stored as part of your\nFirebase project, and can be used to identify a user across every app in your\nproject, regardless of what sign-in method the user used.\n\nIn your apps, you can get the user's basic profile information from the\n`User` object. See [Manage Users](/docs/auth/flutter/manage-users).\n\nIn your Firebase Realtime Database and Cloud Storage Security Rules, you can\nget the signed-in user's unique user ID from the `auth` variable, and use it to\ncontrol what data a user can access.\n\nYou can allow users to sign in to your app using multiple authentication\nproviders by [linking auth provider credentials](/docs/auth/flutter/account-linking)) to an\nexisting user account.\n\nTo sign out a user, call `signOut()`: \n\n await FirebaseAuth.instance.signOut();"]]