Пользователь, созданный API Firebase, не может войти в систему по ссылке электронной почты со статусом disableSignUp true

# #firebase #firebase-authentication #firebaseui #firebase-admin

Вопрос:

  • Мне нужно создавать пользователей на стороне сервера с помощью администратора Firebase.
  • Я запрещаю регистрацию с помощью Firebaseui со disableSignUp статусом, установленным на true .
  • Я хочу использовать только ссылку для входа по электронной почте.

Когда я создаю пользователя (на Python) с помощью

 auth.create_user(email=email, display_name=name, photo_url=profile_image_url)
 

пользователь создается, но у пользователя его нет providerData , и ему отображается сообщение:

 newuser@example.com is not authorized to view the requested page.
 

Это неожиданно — в документации Firebaseui говорится, что пользователи все еще могут быть созданы с помощью API, и можно было бы ожидать, что такие пользователи смогут войти в систему!

Когда я создаю пользователя, как указано выше, но с паролем, ему разрешается войти в систему, но ему отображается запрос пароля.

Как я могу создать нового пользователя электронной почты и принудительно войти по ссылке электронной почты?

Ответ №1:

У меня уже есть облачная функция для уведомления пользователей о создании их учетной записи. Я добавил

   var actionCodeSettings = {
    url: 'https://example.com/welcome',
    handleCodeInApp: true,
  };  

  const link =  await admin.auth().generateSignInWithEmailLink(user.email, actionCodeSettings);
 

к функции, и теперь они получают ссылку для завершения настройки своей учетной записи. При переходе на «/добро пожаловать » открывается окно firebaseui-auth-container , в котором отображается сообщение «Подтвердите свой адрес электронной почты для завершения входа». Электронное письмо будет подтверждено, и пользователь будет изменен на emailLink пользователя. Это вполне естественный поток, почти как если бы он был создан для этой цели…