Перейти к основному содержимому

Проверка метода входа в Firebase

Понятие того, какой метод аутентификации использовал пользователь, может быть полезным по нескольким причинам. Например, его можно использовать для аналитики, поддержки пользователей и настройки опыта пользователя в зависимости от метода входа. Однако этот метод специфичен для Firebase Authentication.​

В нашем приложении Flutter мы можем узнать, какой метод использовал пользователь для аутентификации, используя свойство User.providerData Firebase. Давайте рассмотрим, как это работает в коде:

import 'package:firebase_auth/firebase_auth.dart';

String getUserSignInMethod() {
final user = FirebaseAuth.instance.currentUser;
String signInMethod;

for (var info in user!.providerData) {
signInMethod = info.providerId;
}

return signInMethod;
}

Вот разбор кода:

  • Сначала мы импортируем пакет Firebase Auth, который дает доступ к методам аутентификации Firebase.

  • Далее мы определяем функцию getUserSignInMethod. Эта функция вернет строку, указывающую метод входа, использованный пользователем.

  • Внутри функции мы получаем текущего пользователя из FirebaseAuth с помощью FirebaseAuth.instance.currentUser.

  • Затем мы объявляем строку signInMethod, которая будет хранить имя провайдера, использованного для входа.

  • user.providerData — это итерируемый объект, предоставляющий UserInfo для каждого метода входа, использованного пользователем. Мы проходим по этому итерируемому объекту с помощью цикла for.

  • В каждой итерации мы присваиваем providerId нашей строке signInMethod. providerId может быть 'google.com' для Google, 'facebook.com' для Facebook и 'password' для email и пароля.

  • После завершения цикла функция возвращает строку signInMethod, которая указывает метод входа, использованный пользователем.

  • Функция getUserSignInMethod() возвращает значение типа String, соответствующее providerId метода входа пользователя.

Вот примеры того, как может выглядеть возвращаемое значение:

  • Если пользователь вошел с помощью Google, функция вернет: 'google.com'

  • Если пользователь вошел с помощью Facebook, функция вернет: 'facebook.com'

  • Если пользователь вошел с помощью Email и пароля, функция вернет: 'password'

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

Использование метода входа для динамического UI в FlutterFlow

В FlutterFlow, если вы хотите отображать или использовать метод входа пользователя в логике UI (например, показывать разные интерфейсы для входа через Google и email), вы можете создать пользовательскую функцию с использованием подхода providerId, показанного в статье, и подключить ее к пользовательскому действию. Это позволит принимать динамические решения внутри вашего приложения на основе того, как пользователь аутентифицировался.

Не забудьте возвращать результат из пользовательской функции и сохранять его в переменной App State для удобного доступа по всему приложению.