我正在尝试编写一个功能来重新认证使用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)
}
答案 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用户,只需使用reauthenticateWithPopup
或reauthenticateWithRedirect
,并假设您使用signInWithPopup
或signInWithRedirect
来登录Facebook用户。
const provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().currentUser.reauthenticateWithPopup(provider)
.then((userCredential) => {
// User successfully reauthenticated.
})
.catch((error) => {
// Error.
});