Вы можете использовать Firebase Authentication для создания и использования временных анонимных учетных записей для аутентификации в Firebase. Эти временные анонимные учетные записи можно использовать, чтобы пользователи, которые еще не зарегистрировались в вашем приложении, могли работать с данными, защищенными правилами безопасности. Если анонимный пользователь решит зарегистрироваться в вашем приложении, вы можете связать его учетные данные для входа с анонимной учетной записью , чтобы они могли продолжать работать со своими защищенными данными в будущих сеансах.
Прежде чем вы начнете
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode при открытом проекте приложения перейдите в File > Add Packages .
- При появлении запроса добавьте репозиторий SDK Firebase для платформ Apple:
- Выберите библиотеку аутентификации Firebase.
- Когда закончите, Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
Далее выполните несколько шагов настройки:
- Если вы еще не подключили свое приложение к проекту Firebase, сделайте это из консоли Firebase .
- Включить анонимную авторизацию:
- В консоли Firebase откройте раздел Auth .
- На странице « Методы входа» включите метод анонимного входа.
Анонимно авторизоваться в Firebase
Когда пользователь, вышедший из системы, использует функцию приложения, для которой требуется аутентификация с помощью Firebase, войдите в систему анонимно, выполнив следующие действия:
- Импортируйте модуль
FirebaseCore
в свойUIApplicationDelegate
, а также любые другие модули Firebase, которые использует ваш делегат приложения. Например, чтобы использовать Cloud Firestore и аутентификацию:Быстрый
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Цель-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Настройте общий экземпляр
FirebaseApp
, как правило, в методе инициализатораApp
или делегатаapplication(_:didFinishLaunchingWithOptions:)
:Быстрый
// Use Firebase library to configure APIs FirebaseApp.configure()
Цель-C
// Use Firebase library to configure APIs [FIRApp configure];
- Вызовите метод
signInAnonymouslyWithCompletion:
::Быстрый
Auth.auth().signInAnonymously { authResult, error in // ... }
Цель-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
Цель-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)
Цель-C
GIDAuthentication *authentication = user.authentication; FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken accessToken:authentication.accessToken];
Логин в фейсбук
Быстрый
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Цель-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Вход по электронной почте и паролю
Быстрый
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Цель-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Передайте объект
FIRAuthCredential
в методlinkWithCredential:completion:
пользователя:Быстрый
user.link(with: credential) { authResult, error in // ... } }
Цель-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Если вызов linkWithCredential:completion:
успешно, новая учетная запись пользователя может получить доступ к данным Firebase анонимной учетной записи.
Следующие шаги
Теперь, когда пользователи могут проходить аутентификацию с помощью Firebase, вы можете контролировать их доступ к данным в вашей базе данных Firebase с помощью правил Firebase .