Javascript 如何在Firebase 3.0中注销用户?

Javascript 如何在Firebase 3.0中注销用户?,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,根据,我强制用户使用方法signOut()注销 这就是我尝试过的: var rootRef = firebase.database().ref(); var loggedInUser = firebase.auth(); 1. firebase.signOut(); 2. loggedInUser.signOut(); 3. rootRef.signOut(); 4. signOut(); 5. firebase.auth.signOut(); 我得到。。。不是上述五项中每一项的功能。我

根据,我强制用户使用方法
signOut()
注销

这就是我尝试过的:

var rootRef = firebase.database().ref();
var loggedInUser = firebase.auth();

1. firebase.signOut(); 
2. loggedInUser.signOut(); 
3. rootRef.signOut();
4. signOut();
5. firebase.auth.signOut();

我得到
。。。不是上述五项中每一项的功能
。我知道我对新Firebase的引用没有问题,因为
Firebase.database().ref()
firebase.auth()不会引发错误。我还迁移了控制台中的应用程序。

在JavaScript中,您可以使用以下命令注销用户:

firebase.auth().signOut().then(function() {
  console.log('Signed Out');
}, function(error) {
  console.error('Sign Out Error', error);
});

我不知道我是否正确理解,但如果您想注销所有已登录的用户: 这是不可能的,因为代码正在客户机上运行,而身份验证状态指的是运行它的客户机

您无法访问连接到firebase身份验证服务的所有客户端,因为这意味着要在服务器端运行代码

但是,有一个选项可以指定会话的持续时间,这是auth部分中的记住参数

firebase.auth().signOut()

这对我很有效

有几种方法可以注销用户:

1。FirebaseUI:

添加从属关系:

然后:


3。java默认值:

使用Android默认身份验证依赖项,例如:
com.google.firebase:firebase auth:16.0.1

firebase.auth().signOut().then(function() {
  // Sign-out successful.
}).catch(function(error) {
  // An error happened.
});
FirebaseUser user = mAuth.getCurrentUser();
if (user != null){
    mAuth.signOut();
    Toast.makeText(this, user.getEmail()+ " Sign out!", Toast.LENGTH_SHORT).show();
}else{
    Toast.makeText(this, "You aren't login Yet!", Toast.LENGTH_SHORT).show();
}

扩展@Frank van Puffelen的答案,这段代码就像一个符咒,但是在
then()
函数中作为第二个参数进行拒绝处理是一种不好的做法

而是添加一个
.catch(e)

因为,如果错误发生在
signout()
函数中,那么它将被处理,但如果错误发生在
中,那么()
块中,那么它将不会被处理

更好的代码应该是

firebase.auth().signOut()
.then(() => {
  console.log('Signed Out');
})
.catch(e=>{
 console.error('Sign Out Error', e);
});

不,只有当前在clientOkay中登录的用户不太明白问题的第二部分。我们如何在Java中执行此操作?我正在执行此操作,并在控制台中记录“注销”,但我的firebase.auth().onAuthStateChanged()会立即返回,而用户仍在登录:(使用JS SDK 3.5。2@frank-van puffelen什么情况下signOut()可能会失败?我在调用signOut()后正在刷新页面。添加signOut()。然后(()=>{refresh}解决了Kotlin代码看起来与JavaScript非常相似的问题。
FirebaseUser user = mAuth.getCurrentUser();
if (user != null){
    mAuth.signOut();
    Toast.makeText(this, user.getEmail()+ " Sign out!", Toast.LENGTH_SHORT).show();
}else{
    Toast.makeText(this, "You aren't login Yet!", Toast.LENGTH_SHORT).show();
}
firebase.auth().signOut()
.then(() => {
  console.log('Signed Out');
})
.catch(e=>{
 console.error('Sign Out Error', e);
});