firebase reauthenticateAndRetrieveDataWithCredential Facebook用户凭证

时间:2019-02-25 19:46:24

标签: javascript firebase firebase-authentication

我正在尝试编写一个功能来重新认证使用Facebook帐户登录的Firebase用户。对于电子邮件,我根据电子邮件和密码创建凭据,但是使用Facebook时,不会为该用户存储密码。我试图在文档中找到它,但找不到

 let user = firebase.auth().currentUser;
 let credential = '';

    //User created with Email
    if(user.providerData[0].providerId === "password") {
      credential = firebase.auth.EmailAuthProvider.credential(
        user.email,
        this.state.password
      );
    }

   //User created with Facebook
   if(user.providerData[0].providerId === "facebook.com") {
      credential = firebase.auth.FacebookAuthProvider.credential(
         ? // <= User Email, Token 
       )
   } 
   user.reauthenticateAndRetrieveDataWithCredential(credential).then(function(){
         user.delete().then(function() {             
         }).catch(function(error) {
          console.log(error)
          }
      }).catch((error) => {
       console.log(error)
      }

2 个答案:

答案 0 :(得分:1)

基于FacebookAuthProvider.credential()签名,您将需要OAuth令牌/ accessToken来创建证书。

您可以在用户登录时提取accessToken:

insert tblb
select b.* from tblA a cross apply dbo.GenerateDateRange(a.dtFrom, a.dtTo, 1) b

该示例摘自https://firebase.google.com/docs/auth/web/facebook-login,在这里您可以找到有关此信息的更多信息。

答案 1 :(得分:0)

如果您想重新认证Facebook用户,只需使用reauthenticateWithPopupreauthenticateWithRedirect,并假设您使用signInWithPopupsignInWithRedirect来登录Facebook用户。

const provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().currentUser.reauthenticateWithPopup(provider)
  .then((userCredential) => {
    // User successfully reauthenticated.
  })
  .catch((error) => {
    // Error.
  });