Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Авторизоваться с помощью Firebase анонимно

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Вы можете использовать Firebase Authentication для создания и использования временных анонимных учетных записей для аутентификации в 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 ID пользователя, токен доступа 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 Realtime Database и Cloud Storage вы можете получить уникальный идентификатор вошедшего пользователя из переменной auth и использовать его для управления тем, к каким данным пользователь может получить доступ.

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

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

await FirebaseAuth.instance.signOut();