Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

JavaScriptを使用してFirebaseで匿名で認証する

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

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

あなたが始める前に

  1. Firebase を JavaScript プロジェクトに追加します
  2. アプリを Firebase プロジェクトにまだ接続していない場合は、 Firebase コンソールから接続します。
  3. 匿名認証を有効にします。
    1. Firebase コンソールで、 Authセクションを開きます。
    2. [サインイン方法]ページで、匿名サインイン方法を有効にします。
    3. オプション: プロジェクトをFirebase Authentication with Identity Platformにアップグレードした場合は、自動クリーンアップを有効にできます。この設定を有効にすると、30 日以上経過した匿名アカウントが自動的に削除されます。自動クリーンアップが有効になっているプロジェクトでは、匿名認証は使用制限または請求クォータにカウントされなくなります。自動クリーンアップを参照してください。

Firebase で匿名で認証する

サインアウトしたユーザーが Firebase での認証を必要とするアプリ機能を使用する場合は、次の手順を実行してユーザーを匿名でサインインします。

  1. signInAnonymouslyメソッドを呼び出します。

    Web version 9

    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 version 8

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    これは、エラーをキャッチして処理できる場所でもあります。エラー コードのリストについては、 Auth Reference Docsを参照してください。
  2. signInAnonymouslyメソッドがエラーなしで完了すると、 onAuthStateChangedに登録されたオブザーバーがトリガーされ、 Userオブジェクトから匿名ユーザーのアカウント データを取得できます。

    Web version 9

    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/firebase.User
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web version 8

    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/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

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

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

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

    Google サインイン

    Web version 9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web version 8

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    フェイスブックログイン

    Web version 9

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web version 8

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    メールパスワードサインイン

    Web version 9

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web version 8

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. AuthCredentialオブジェクトをサインイン ユーザーのlinkメソッドに渡します。

    Web version 9

    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 version 8

    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 コンソールで自動クリーンアップを有効にできます。この機能を有効にすると、Firebase は 30 日以上経過した匿名アカウントを自動的に削除します。自動クリーンアップが有効になっているプロジェクトでは、匿名認証は使用制限や課金クォータにカウントされません。

  • 自動クリーンアップを有効にした後に作成された匿名アカウントは、作成後 30 日後に自動的に削除される可能性があります。
  • 自動クリーンアップを有効にする前に作成された匿名アカウントは、自動クリーンアップを有効にしてから 30 日後に自動削除の対象となります。
  • 自動クリーンアップをオフにすると、削除予定の匿名アカウントは削除予定のままになります。これらのアカウントは、使用制限や請求割り当てにはカウントされません。
  • 匿名アカウントを任意のサインイン方法にリンクして「アップグレード」した場合、アカウントは自動的に削除されません。

この機能を有効にする前に影響を受けるユーザーの数を確認したい場合で、プロジェクトをFirebase Authentication with Identity Platformにアップグレードした場合は、 Cloud Loggingis_anonでフィルタリングできます。

次のステップ

ユーザーが Firebase で認証できるようになったので、 Firebase ルールを使用して、Firebase データベース内のデータへのアクセスを制御できます。