Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now

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

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

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

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

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

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

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

    Интернет v8

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });

    Интернет v9

    import { getAuth, signInAnonymously } from "firebase/auth";
    
    const auth = getAuth();
    signInAnonymously(auth)
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });
    Здесь также можно выявлять и обрабатывать ошибки. Список кодов ошибок см. В Справочной документации по аутентификации .
  2. Если метод signInAnonymously завершается без ошибок, срабатывает наблюдатель, зарегистрированный в onAuthStateChanged , и вы можете получить данные учетной записи анонимного пользователя из объекта User :

    Интернет v8

    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
        // ...
      }
    });

    Интернет v9

    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
        // ...
      }
    });

Преобразование анонимной учетной записи в постоянную.

Когда анонимный пользователь регистрируется в вашем приложении, вы можете разрешить ему продолжить работу с его новой учетной записью - например, вы можете захотеть сделать элементы, которые пользователь добавил в свою корзину, прежде чем он подписался, доступными в своей новой учетной записи. корзина покупок аккаунта. Для этого выполните следующие действия:

  1. Когда пользователь регистрируется, завершите процесс входа для поставщика аутентификации пользователя до, но не включая, вызова одного из методов Auth.signInWith . Например, получите токен Google ID пользователя, токен доступа Facebook или адрес электронной почты и пароль.
  2. Получите AuthCredential для нового поставщика аутентификации:

    Вход в Google

    Интернет v8

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Интернет v9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Логин в фейсбук

    Интернет v8

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Интернет v9

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    Электронная почта-пароль для входа

    Интернет v8

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);

    Интернет v9

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

    Интернет v8

    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);
      });

    Интернет v9

    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);
      });

В случае успешного вызова link новая учетная запись пользователя может получить доступ к данным Firebase анонимной учетной записи.

Следующие шаги

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