【问题标题】:How to create “credential” object needed by Firebase web user.reauthenticate() method?如何创建 Firebase web user.reauthenticate() 方法所需的“凭据”对象?
【发布时间】: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 令牌”,我不知道如何获得。

【问题讨论】:

标签: javascript firebase firebase-authentication


【解决方案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.
});

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多