С помощью Firebase Authentication можно создавать и использовать временные анонимные учетные записи для аутентификации в Firebase. Эти временные анонимные учетные записи позволяют пользователям, еще не зарегистрировавшимся в вашем приложении, работать с данными, защищенными правилами безопасности. Если анонимный пользователь решит зарегистрироваться в вашем приложении, вы можете связать его учетные данные для входа с анонимной учетной записью , чтобы он мог продолжать работать со своими защищенными данными в будущих сессиях.
Прежде чем начать
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode, открыв проект приложения, перейдите в меню File > Add Packages .
- При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:
- Выберите библиотеку Firebase Authentication .
- Добавьте флаг
-ObjCв раздел «Другие флаги компоновщика» в настройках сборки вашей целевой системы. - После завершения Xcode автоматически начнет разрешение и загрузку ваших зависимостей в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
- Если вы еще не подключили свое приложение к проекту Firebase, сделайте это через консоль Firebase .
- Включить анонимную аутентификацию:
- В консоли Firebase откройте раздел «Аутентификация» .
- На странице «Способы входа» включите анонимный способ входа.
- Необязательно : Если вы обновили свой проект до Firebase Authentication with Identity Platform , вы можете включить автоматическую очистку. При включении этой настройки анонимные учетные записи старше 30 дней будут автоматически удаляться. В проектах с включенной автоматической очисткой анонимная аутентификация больше не будет учитываться в лимитах использования или платежных квотах. См. раздел «Автоматическая очистка» .
Аутентификация с помощью Firebase анонимно
Когда пользователь, не вышедший из системы, использует функцию приложения, требующую аутентификации в Firebase, выполните следующие действия для его анонимного входа в систему:
- Импортируйте модуль
FirebaseCoreв вашUIApplicationDelegate, а также любые другие модули Firebase, используемые вашим делегатом приложения. Например, чтобы использовать Cloud Firestore и Authentication :SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Быстрый
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Настройте общий экземпляр
FirebaseAppв методеapplication(_:didFinishLaunchingWithOptions:)вашего делегата приложения:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Быстрый
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Если вы используете SwiftUI, вам необходимо создать делегат приложения и прикрепить его к вашей структуре
Appс помощьюUIApplicationDelegateAdaptorилиNSApplicationDelegateAdaptor. Также необходимо отключить подмену делегатов приложения. Для получения дополнительной информации см. инструкции SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Вызовите метод
signInAnonymouslyWithCompletion:Быстрый
Auth.auth().signInAnonymously { authResult, error in // ... }
Objective-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Если метод
signInAnonymouslyWithCompletion:завершится без ошибок, вы сможете получить данные учетной записи анонимного пользователя из объектаFIRAuthDataResult:Быстрый
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
Objective-C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
Преобразовать анонимный аккаунт в постоянный.
Когда анонимный пользователь регистрируется в вашем приложении, вы можете разрешить ему продолжить работу с новой учетной записью — например, вы можете захотеть сделать товары, добавленные пользователем в корзину до регистрации, доступными в корзине покупок новой учетной записи. Для этого выполните следующие шаги:
- Когда пользователь регистрируется, завершите процесс авторизации для поставщика аутентификации пользователя, включая вызов одного из методов
FIRAuth.signInWith. Например, получите токен Google ID пользователя, токен доступа Facebook или адрес электронной почты и пароль. Получите учетные данные
FIRAuthCredentialдля нового поставщика аутентификации:Вход через Google
Быстрый
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
Objective-C
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Вход через Facebook
Быстрый
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Objective-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Вход по электронной почте и паролю
Быстрый
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Objective-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Передайте объект
FIRAuthCredentialметодуlinkWithCredential:completion:пользователя, выполнившего вход в систему:Быстрый
user.link(with: credential) { authResult, error in // ... } }
Objective-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Если вызов функции linkWithCredential:completion: завершится успешно, новая учетная запись пользователя сможет получить доступ к данным анонимной учетной записи в Firebase.
Автоматическая очистка
Если вы обновили свой проект до Firebase Authentication with Identity Platform , вы можете включить автоматическую очистку в консоли Firebase . Включение этой функции позволяет Firebase автоматически удалять анонимные учетные записи старше 30 дней. В проектах с включенной автоматической очисткой анонимная аутентификация не будет учитываться в лимитах использования или платежных квотах.
- Любые анонимные учетные записи, созданные после включения автоматической очистки, могут быть автоматически удалены в любое время по истечении 30 дней с момента создания.
- Существующие анонимные учетные записи будут автоматически удалены через 30 дней после включения автоматической очистки.
- Если отключить автоматическую очистку, все анонимные учетные записи, запланированные к удалению, останутся запланированными к удалению.
- Если вы "обновите" анонимный аккаунт, связав его с любым способом входа в систему, аккаунт не будет удален автоматически.
Если вы хотите узнать, сколько пользователей будет затронуто до включения этой функции, и вы обновили свой проект до Firebase Authentication with Identity Platform , вы можете отфильтровать данные по параметру is_anon в Cloud Logging .
Следующие шаги
Теперь, когда пользователи могут проходить аутентификацию в Firebase, вы можете контролировать их доступ к данным в вашей базе данных Firebase с помощью правил Firebase .