如何创建“credential”对象,以便Firebase Web用户能够使用reauthenticateWithCredential()方法?
如何创建“credential”对象,以便Firebase Web用户能够使用reauthenticateWithCredential()方法?
在新文档中,这个例子不是很清楚:
var user = firebase.auth().currentUser; var credential; // Prompt the user to re-provide their sign-in credentials user.reauthenticateWithCredential(credential).then(function() {
我应该如何创建这个credential
对象?
我尝试了:
reauthenticateWithCredential(email, password)
(类似登录的方法)reauthenticateWithCredential({ email, password })
(文档中只提到一个参数)
没有成功 🙁
PS:我不想计算在新文档中寻找相关信息浪费的时间... 我非常想念那些精彩的firebase.com文档,但是我想切换到v3或更高版本的firebase.storage...
admin 更改状态以发布 2023年5月24日
我设法使它工作,文档应该更新,包括这个对于那些不想花太多时间在详尽但难以阅读的 API 参考中的人来说。
Firebase 8.x
凭据对象是这样创建的:
const user = firebase.auth().currentUser; const credential = firebase.auth.EmailAuthProvider.credential( user.email, userProvidedPassword ); // Now you can use that to reauthenticate user.reauthenticateWithCredential(credential);
Firebase 9.x
(感谢 @Dako Junior的答案,我将其添加在这里以保证详尽性)
import { EmailAuthProvider, getAuth, reauthenticateWithCredential, } from 'firebase/auth' const auth = getAuth() const credential = EmailAuthProvider.credential( auth.currentUser.email, userProvidedPassword ) const result = await reauthenticateWithCredential( auth.currentUser, credential ) // User successfully reauthenticated. New ID tokens should be valid.
注意
有些人问 userProvidedPassword
是否是第一次登录时存储的变量。它不是,应该在一个新的对话框/页面中打开一个密码输入框,然后用户将再次输入他们的密码。
我坚持认为,你
它不会经常发生,但使用 Firebase 的应用程序应该支持这一点,否则用户会在某些时候受阻。