Вы можете использовать Firebase Authentication для создания и использования временных анонимных учетных записей для аутентификации в Firebase. Эти временные анонимные учетные записи можно использовать, чтобы пользователи, которые еще не зарегистрировались в вашем приложении, могли работать с данными, защищенными правилами безопасности. Если анонимный пользователь решит зарегистрироваться в вашем приложении, вы можете связать его учетные данные для входа с анонимной учетной записью, чтобы они могли продолжать работать со своими защищенными данными в будущих сеансах.
Прежде чем вы начнете
- Добавьте Firebase в свой проект JavaScript .
- Если вы еще не подключили свое приложение к проекту Firebase, сделайте это из консоли Firebase .
- Включить анонимную авторизацию:
- В консоли Firebase откройте раздел Auth .
- На странице «Методы входа» включите метод анонимного входа.
- Необязательно : если вы обновили свой проект до Firebase Authentication with Identity Platform , вы можете включить автоматическую очистку. Если вы включите этот параметр, анонимные учетные записи старше 30 дней будут автоматически удаляться. В проектах с включенной автоматической очисткой анонимная проверка подлинности больше не будет учитываться при расчете ограничений на использование или квот на выставление счетов. См. Автоматическая очистка .
Анонимно авторизоваться в Firebase
Когда пользователь, вышедший из системы, использует функцию приложения, для которой требуется аутентификация с помощью Firebase, войдите в систему анонимно, выполнив следующие действия:
- Вызовите метод
signInAnonymously
:Здесь также можно ловить и обрабатывать ошибки. Список кодов ошибок можно найти в Справочной документации по аутентификации .Web modular API
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 namespaced API
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- Если метод
signInAnonymously
завершится без ошибок, сработает наблюдатель, зарегистрированный вonAuthStateChanged
, и вы сможете получить данные учетной записи анонимного пользователя из объектаUser
:Web modular API
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/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
Web namespaced API
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/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
Преобразование анонимной учетной записи в постоянную учетную запись
Когда анонимный пользователь регистрируется в вашем приложении, вы можете разрешить ему продолжить работу с новой учетной записью — например, вы можете сделать товары, добавленные пользователем в корзину до регистрации, доступными в новой учетной записи. корзина аккаунта. Для этого выполните следующие шаги:
- Когда пользователь регистрируется, завершите процесс входа для поставщика проверки подлинности пользователя до вызова одного из методов
Auth.signInWith
, но не включая его. Например, получите токен Google ID пользователя, токен доступа Facebook или адрес электронной почты и пароль. Получите
AuthCredential
для нового поставщика аутентификации:Вход через Google
Web modular API
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Web namespaced API
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Логин в фейсбук
Web modular API
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
Web namespaced API
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
Вход по электронной почте и паролю
Web modular API
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Web namespaced API
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Передайте объект
AuthCredential
методуlink
пользователя, выполнившего вход:Web modular API
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 namespaced API
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 , вы можете отфильтровать is_anon
в Cloud Logging .
Следующие шаги
Теперь, когда пользователи могут проходить аутентификацию с помощью Firebase, вы можете контролировать их доступ к данным в вашей базе данных Firebase с помощью правил Firebase .