如何创建 Firebase web user.reauthenticate() 方法所需的“凭据”对象?
Posted
技术标签:
【中文标题】如何创建 Firebase web user.reauthenticate() 方法所需的“凭据”对象?【英文标题】:How to create “credential” object needed by Firebase web user.reauthenticate() method? 【发布时间】:2017-09-12 04:53:06 【问题描述】:var user = firebase.auth().currentUser;
var credential;
// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential).then(function()
使用 v3 Firebase 客户端,我应该如何为 Google 身份验证提供程序创建此凭据对象(不是电子邮件和密码)。
这里回答了如何使用电子邮件和密码进行操作:Email&Password。
我尝试过var credential = firebase.auth.GoogleAuthProvider.credential();
,但根据docs,它需要一个“Google Id 令牌”,我不知道如何获得。
【问题讨论】:
打开console.firebase.google.com -> 转到“添加firebase webapp”复制粘贴sn-p。应该有你的令牌 我想你可能误解了。您复制和粘贴的配置是初始化 firebase。firebase.initializeApp()
。我正在寻找需要传递给firebase.auth.GoogleAuthProvider.credential()
的内容,以便重新验证登录用户。
您最初是如何登录该用户的?您使用的是 signInWithPopup/Redirect 吗?
signInWithPopup
How to create "credential" object needed by Firebase web user.reauthenticate() method?的可能重复
【参考方案1】:
您可以使用firebase.auth.EmailAuthProvider.credential 创建AuthCredential。
然后您可以使用firebase.User.reauthenticateWithCredential 重新进行身份验证。
var user = firebase.auth().currentUser;
var credential = firebase.auth.EmailAuthProvider.credential(
user.email,
'yourpassword'
);
user.reauthenticateWithCredential(credential);
【讨论】:
虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高答案的长期价值。 感谢@Badacadabra,我添加了一些上下文。 为什么投反对票?如果有问题,请发表评论,我会尽力帮助您。【参考方案2】:您可以使用 reauthenticateWithPopup(provider) 或 reauthenticateWithRedirect(provider) 方法重新验证使用 GooglaAuth Provider 的用户而无需令牌和凭据:
// Create provider as usual
function createGoogleProvider()
const provider = new auth.GoogleAuthProvider()
provider.addScope('profile')
provider.addScope('email')
return provider
// Reauthenticate with popup:
user.reauthenticateWithPopup(createGoogleProvider()).then(function(result)
// The firebase.User instance:
var user = result.user;
, function(error)
// An error happened.
);
【讨论】:
以上是关于如何创建 Firebase web user.reauthenticate() 方法所需的“凭据”对象?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter WEB:Firebase:没有创建 Firebase 应用“[DEFAULT]”
如何保护部署到 Firebase Hosting 的 Flutter Web 的源代码?
如何:在注册/创建时设置 Firebase 用户的个人资料信息? (颤动网络)
如何保存我最近用 axios 创建的 firebase 中的数据并做出反应?
Flutter Web - Firebase:没有创建 Firebase App '[DEFAULT]' - 调用 Firebase App.initializeApp() (app/no-app)