Kyl*_*iss 5 javascript facebook-authentication firebase firebase-authentication
我在我的 Firebase 应用程序中创建匿名会话以在用户创建帐户之前保存用户数据。我看到 Firebase 允许将 Facebook 登录链接到一个匿名帐户,这听起来非常简洁,但这个过程的一个警告似乎是我必须自己获取 Facebook 令牌,在令人敬畏的 Firebase API 的温暖和舒适之外,这似乎奇怪的是,考虑到 Firebase 似乎代表应用程序执行的登录流程有多少,未开发。
有关如何从其帐户链接文档连接匿名帐户的代码示例:
var credential = firebase.auth.FacebookAuthProvider.credential(
response.authResponse.accessToken);
Run Code Online (Sandbox Code Playgroud)
自然,我想使用 Firebase 获取令牌的方式
var provider = new firebase.auth.FacebookAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
// result.token or whatever would appear here
});
Run Code Online (Sandbox Code Playgroud)
但是如果我运行它,我将丢失我的匿名会话(以及我的匿名用户 ID,我们希望新的 Facebook 登录使用它)。
无论如何,是否可以从 Firebase 的身份验证机制中获取 Facebook 令牌,而无需登录用户并丢失我试图转换为可登录 Facebook 的帐户的匿名会话?(目标是不必自己调用 Facebook API,特别是因为我也会在这里添加 Google)
我认为您正在寻找#linkWithPopup或#linkWithRedirect:
var provider = new firebase.auth.FacebookAuthProvider();
user.linkWithPopup(provider).then(function(result) {
console.log('Party ');
});
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因不能削减它,你总是可以选择自己做:
快速而肮脏的例子:
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);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |