Link Facebook 到 Firebase 匿名身份验证而不调用 Facebook API
Link Facebook to Firebase Anonymous Auth without calling Facebook API
我正在我的 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的方式获取token
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)
我想你正在寻找 #linkWithPopup or #linkWithRedirect:
var provider = new firebase.auth.FacebookAuthProvider();
user.linkWithPopup(provider).then(function(result) {
console.log('Party ');
});
如果由于某种原因无法解决问题,您可以随时选择自己动手:
- 匿名登录用户,并将用户存储在某处
- 使用提供商登录用户并将令牌存储在某处
- 删除提供商用户,然后link具有令牌的帐户
快速粗略的示例:
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);
});
}
我正在我的 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的方式获取token
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)
我想你正在寻找 #linkWithPopup or #linkWithRedirect:
var provider = new firebase.auth.FacebookAuthProvider();
user.linkWithPopup(provider).then(function(result) {
console.log('Party ');
});
如果由于某种原因无法解决问题,您可以随时选择自己动手:
- 匿名登录用户,并将用户存储在某处
- 使用提供商登录用户并将令牌存储在某处
- 删除提供商用户,然后link具有令牌的帐户
快速粗略的示例:
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);
});
}