Обработка разных провайдеров аутентификации Firebase - PullRequest
0 голосов
/ 12 октября 2019

Мне было интересно, какими должны быть лучшие практики с использованием различных поставщиков Firebase Auth. У меня есть проект Flutter, который использует Firebase Auth Google и почтовых провайдеров для регистрации пользователя.

Проблема в том, что некоторые пользователи имеют больше разрешений, если они подтвердили свой номер телефона. Из-за этого мне пришлось также внедрить поставщика Phone Auth, но теперь, когда пользователь проверяет свой номер, он автоматически входит в систему с новым идентификатором, потому что нет способа отделить проверку телефона от процесса входа.

ВСначала я подумал, что удаление нового пользователя должно дать мне простое решение, но когда вы удаляете пользователя, оно тоже подписывает его, поэтому оно не работает так, как мне нужно.

Я думаю, что так и должно бытьЛегко переключиться на «оригинального» пользователя, когда я создаю нового, но тогда у меня все еще будет один пользователь с 2 идентификаторами, и это немного хаотично.

Итак, кто-нибудь сталкивался с таким же? проблема и каково было их решение? Если нет, то не могли бы вы помочь мне найти лучший способ справиться с этой ситуацией?

Редактировать: На всякий случай, если у кого-то возникнет идея дать пользователю возможность зарегистрироваться с помощью телефонного провайдера при регистрации,это не решение.

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Если у вас есть один пользователь, входящий в систему с несколькими провайдерами, ожидается, что вы попросите Firebase Authentication связать учетные записи, чтобы у них всех был один и тот же идентификатор. Документация для сети обсуждает это подробно. Я уверен, что API и процедура похожи на флаттер.

0 голосов
/ 13 октября 2019

Вот код флаттера, на тот случай, если он кому-нибудь понадобится:

void _linkWithCredential() async {
    final AuthCredential credential = PhoneAuthProvider.getCredential(
      verificationId: _verificationId,
      smsCode: _smsController.text,
    );
     (await _auth.currentUser()).linkWithCredential(credential);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...