Catch up on everthing we announced at this year's Firebase Summit. Learn more

Анонимно аутентифицируйтесь с Firebase с помощью JavaScript

Вы можете использовать Firebase Authentication для создания и использования временных анонимных учетных записей для аутентификации с Firebase. Эти временные анонимные учетные записи могут использоваться, чтобы позволить пользователям, которые еще не зарегистрировались в вашем приложении, работать с данными, защищенными правилами безопасности. Если анонимный пользователь решает подписаться на приложение, вы можете связать их регистрационные данные для учетной записи анонимной , чтобы они могли продолжать работать со своими защищенными данными в будущих сессиях.

Прежде чем вы начнете

  1. Добавить Firebase в свой проект JavaScript .
  2. Если вы еще не подключили приложение к вашему проекту Firebase, сделать это из консоли Firebase .
  3. Включить анонимную аутентификацию:
    1. В Firebase консоли откройте раздел Auth.
    2. На странице входа в методах, включите анонимный способ входа в.

Анонимно аутентифицируйтесь с Firebase

Когда вышедший из системы пользователь использует функцию приложения, требующую аутентификации с помощью Firebase, войдите в систему анонимно, выполнив следующие действия:

  1. Вызов signInAnonymously метод:

    Веб-версия 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;
        // ...
      });

    Веб-версия 8

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    Здесь также можно выявлять и обрабатывать ошибки. Для получения списка кодов ошибок должны смотреть на Auth Reference Docs .
  2. Если signInAnonymously метод завершается без ошибок, то наблюдатель , зарегистрированный в onAuthStateChanged срабатывает , и вы можете получить данные учетной записи анонимного пользователя от User объекта:

    Веб-версия 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
        // ...
      }
    });

    Веб-версия 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 методов. Например, получите токен Google ID пользователя, токен доступа Facebook или адрес электронной почты и пароль.
  2. Получить AuthCredential для нового поставщика аутентификации:

    Вход в Google

    Веб-версия 9

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

    Веб-версия 8

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Логин в фейсбук

    Веб-версия 9

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

    Веб-версия 8

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    Электронная почта-пароль для входа

    Веб-версия 9

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

    Веб-версия 8

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. Пропустите AuthCredential объекта к знаку-пользователя в link метода:

    Веб-версия 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);
      });

    Веб-версия 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, вы можете контролировать их доступ к данным в базе данных Firebase с использованием правил Firebase .