Flutter вход в Google только тогда, когда пользователь существует в firebase? - PullRequest
1 голос
/ 14 июля 2020

Я использую два пакета для авторизации firebase:

  1. google_sign_in ^ 4.5.1
  2. firebase_auth ^ 0.16.1

Когда я вызываю метод входа

final FirebaseUser user =
        (await _auth.signInWithCredential(credential)).user;

Он создает пользователя в таблице авторизации firebase. Есть ли способ проверить, существует ли пользователь с этими данными социального провайдера, и, если он не существует, отказаться от авторизации? Я имею в виду только метод входа в Google.

1 Ответ

1 голос
/ 14 июля 2020

Вы можете использовать fetchSignInMethodsForEmail метод , чтобы определить методы входа, которые использовались для входа с адресом электронной почты в учетных данных. Если это включает метод входа google.com, пользователь ранее входил с этой учетной записью в провайдер Google.

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

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

...