我在Firebase应用程序中创建匿名会话,以便在创建帐户之前保存用户数据。 I saw that Firebase allows linking a Facebook login to an anonymous account这听起来很整洁,但是这个过程的一个警告似乎是我必须自己抓住Facebook令牌,超出了令人敬畏的Firebase API的温暖和舒适,这似乎很奇怪考虑到Firebase似乎代表应用程序执行了多少登录流程,因此未开发。
如何连接匿名帐户from their account linking docs的代码示例:
var credential = firebase.auth.FacebookAuthProvider.credential(
response.authResponse.accessToken);
当然,我想使用Firebase获取令牌的方式
var provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
// result.token or whatever would appear here
});
但如果我要运行它,我将失去我的匿名会话(以及我的匿名用户ID,我们希望新的Facebook登录使用)。
无论如何都没有使用Firebase的身份验证机制获取Facebook令牌而没有登录用户并且丢失了我试图转换为Facebook可登录帐户的匿名会话? (我的目标是不必自己调用Facebook API,特别是因为我也会在这里添加Google)
答案 0 :(得分:3)
我认为您正在寻找#linkWithPopup或#linkWithRedirect:
var provider = new firebase.auth.FacebookAuthProvider();
user.linkWithPopup(provider).then(function(result) {
console.log('Party ');
});
如果由于某种原因没有削减它,你可以随时选择自己做:
快速而肮脏的例子:
var googleToken;
var anonUser;
firebase.auth().signInAnonymously().then(function(user) {
anonUser = user;
}).catch(function(error) {
console.error("Anon sign in failed", error);
});
function signInWithGoogle() {
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
googleToken = result.credential.idToken;
}).catch(function(error) {
console.error("Google sign in failed", error);
})
}
function deleteAndLink() {
firebase.auth().currentUser.delete().then(function() {
var credential =
firebase.auth.GoogleAuthProvider.credential(googleToken);
anonUser.link(googleCredential);
}).then(function() {
console.log("Link succeeded");
}).catch(function(error) {
console.error("Something went wrong", error);
});
}