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

# #javascript #reactjs #firebase #firebase-authentication

Вопрос:

У меня много таких пользователей, некоторые пользователи войти с учетной записи Google, о других с Google учетная запись и пароль, я только хочу, чтобы отправить сброс почту sendPasswordResetEmail если сообщение принадлежит пользователю пароль, а не к каждому виду счета, каждый пользователь должен сделать, когда пользователь не войти.

я использовал эту функцию sendPasswordResetEmail , но эта функция отправляла всем почту, у меня была учетная запись Google без пароля, это неправильно для меня

Комментарии:

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

2. @sairaj но я использую клиент firebase от reactjs

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

4. Вам не нужны облачные функции, чтобы получить поставщиков пользователей, вошедших в систему в данный момент.

5. да, но он хочет отправить всем пользователям, что, вероятно, является действием администратора

Ответ №1:

Вы можете проверить поставщиков аутентификации пользователя и проверить, включает ли это пароль электронной почты:

 const user = firebase.auth().currentUser;

if (user !== null) {
  if (user.providerData.find(p => p.providerId === "password")) {
    // user had email-password account
    // send email
  }
}
 

Комментарии:

1. Проверяет ли ваш пример, есть ли пароль на электронном письме?

2. я попробую ответить на ваш вопрос, я скажу вам, сработает ли он

3. но пользователь не является логином, ваш пример работает, когда пользователь является логином

4. @brucelee тогда это невозможно сделать с помощью клиентского SDK. Вам придется использовать Admin SDK с облачными функциями или сервером.

5. как я могу это сделать после AdminSDK?