Аутентификация с помощью Firebase анонимно

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

Прежде чем начать

  1. Если вы еще этого не сделали, выполните действия, описанные в руководстве по началу работы .

  2. Включите анонимный вход:

    • В разделе «Аутентификация» консоли Firebase откройте страницу «Метод входа» .
    • На странице «Метод входа» включите анонимный метод входа и нажмите « Сохранить» .

Аутентификация с помощью Firebase анонимно

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

try {
 
final userCredential =
      await
FirebaseAuth.instance.signInAnonymously();
 
print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
 
switch (e.code) {
   
case "operation-not-allowed":
     
print("Anonymous auth hasn't been enabled for this project.");
     
break;
   
default:
     
print("Unknown error.");
 
}
}

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

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

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

  2. Получите объект Credential для нового поставщика аутентификации:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);

    // Email and password sign-in
    final credential =
       
    EmailAuthProvider.credential(email: emailAddress, password: password);

    // Etc.
  3. Передайте объект Credential методу linkWithCredential() пользователя, выполняющего вход:

    try {
     
    final userCredential = await FirebaseAuth.instance.currentUser
         
    ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
     
    switch (e.code) {
       
    case "provider-already-linked":
         
    print("The provider has already been linked to the user.");
         
    break;
       
    case "invalid-credential":
         
    print("The provider's credential is not valid.");
         
    break;
       
    case "credential-already-in-use":
         
    print("The account corresponding to the credential already exists, "
             
    "or is already linked to a Firebase User.");
         
    break;
       
    // See the API reference for the full list of error codes.
       
    default:
         
    print("Unknown error.");
     
    }
     
    ```

Если вызов linkWithCredential() завершится успешно, новая учетная запись пользователя сможет получить доступ к данным Firebase анонимной учетной записи.

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

После того как пользователь создает новую учетную запись, эта учетная запись сохраняется как часть вашего проекта Firebase и может использоваться для идентификации пользователя в каждом приложении вашего проекта, независимо от того, какой метод входа использовал пользователь.

В своих приложениях вы можете получить базовую информацию профиля пользователя из объекта User . См. Управление пользователями .

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

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

Чтобы выйти из системы, вызовите signOut() :

await FirebaseAuth.instance.signOut();