Google I/O 2022 で発表された Firebase の最新情報をご覧ください。詳細

Firebaseで匿名で認証する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Firebase認証を使用して、一時的な匿名アカウントを作成および使用して、Firebaseで認証できます。これらの一時的な匿名アカウントを使用すると、アプリにまだサインアップしていないユーザーがセキュリティルールで保護されたデータを操作できるようになります。匿名ユーザーがアプリにサインアップすることを決定した場合は、サインインクレデンシャルを匿名アカウントにリンクして、今後のセッションで保護されたデータを引き続き使用できるようにすることができます。

あなたが始める前に

  1. まだ行っていない場合は、スタートガイドの手順に従ってください。

  2. 匿名サインインを有効にする:

    • Firebaseコンソールの[認証]セクションで、[ログイン方法]ページを開きます。
    • [サインイン方法]ページで、匿名サインイン方法を有効にして、[保存]をクリックします。

Firebaseで匿名で認証する

サインアウトしたユーザーがFirebaseでの認証を必要とするアプリ機能を使用する場合は、 signInAnonymously()を呼び出してユーザーを匿名でサインインします。

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

匿名アカウントを永続アカウントに変換する

匿名ユーザーがアプリにサインアップするときに、新しいアカウントでの作業を続行できるようにすることができます。たとえば、ユーザーがサインアップする前にユーザーがショッピングカートに追加したアイテムを新しいアカウントで利用できるようにすることができます。アカウントのショッピングカート。これを行うには、次の手順を実行します。

  1. ユーザーがサインアップしたら、 signInWithメソッドの1つを呼び出すまで、ただしこれを含まない、ユーザーの認証プロバイダーのサインインフローを完了します。たとえば、ユーザーのGoogle IDトークン、Facebookアクセストークン、またはメールアドレスとパスワードを取得します。

  2. 新しい認証プロバイダーのCredentialオブジェクトを取得します。

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. CredentialオブジェクトをサインインユーザーのlinkWithCredential()メソッドに渡します。

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (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 RealtimeDatabaseとCloudStorageのセキュリティルールでは、ログインしたユーザーの一意のユーザーIDをauth変数から取得し、それを使用してユーザーがアクセスできるデータを制御できます。

認証プロバイダーのクレデンシャルを既存のユーザーアカウントにリンクすることで、ユーザーが複数の認証プロバイダーを使用してアプリにサインインできるようにすることができます。

ユーザーをサインアウトするには、 signOut()を呼び出します。

await FirebaseAuth.instance.signOut();