我正在使用react native expo和firebase api添加密码重置功能.

UI link

第一个输入是当前密码.

第二个输入是新密码.

第三个输入是确认新密码.

要判断当前密码,我必须获取当前密码.

请帮帮我!

推荐答案

您可以使用reauthenticateWithCredential()验证用户密码,然后使用updatePassword()更新密码:

import { getAuth, reauthenticateWithCredential, EmailAuthProvider } from "firebase/auth";

const auth = getAuth();

const resetUserPassword = async () => {
  const user = auth.currentUser;

  const cred = EmailAuthProvider.credential(user.email, "[USER_PASSWORD]");

  try {
    await reauthenticateWithCredential(user, cred)
   
    // User entered correct credentials
    // Update password
    await updatePassword(auth.currentUser, "[NEW_PASSWORD]");
  } catch (e) {
    console.log(e.code, e.message)
    // Could be incorrect credentials
  }
} 

更新密码需要最近登录,如果用户长时间登录,则需要重新身份验证.

Javascript相关问答推荐

当我使用jQuery时,我的图标显示为[对象对象]

未使用Outlet渲染子组件

为什么这个自定义组件会被放置在TR之外?

如何使用React渲染器放置根dis?

如何解决这个未能在响应上执行json:body stream已读问题?

可以的.是否可以在不预编译的情况下使用嵌套 Select 器?

字节数组通过echo框架传输到JS blob

Google Apps脚本中的discord邀请API响应的日期解析问题

我开始使用/url?q=使用Cheerio

在Angular中将样式应用于innerHTML

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

从Node JS将对象数组中的数据插入Postgres表

引用在HTMLAttributes<;HTMLDivElement>;中不可用

优化Google Sheet脚本以将下拉菜单和公式添加到多行

使用Google API无法进行Web抓取

如何在Press上重新启动EXPO-AV视频?

Phaser3 preFX addGlow不支持zoom

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

JavaScript将字符串数字转换为整数

MongoDB通过数字或字符串过滤列表