如何在 Firebase 3.0 中注销用户?
How do I sign out users in Firebase 3.0?
根据 documentation,我强制用户使用 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();
以上五个中的每一个我都得到 ... is not a function
。我知道我对新 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 部分中的 remember 参数。
firebase.auth().signOut()
简直对我有用!
有几种注销用户的方法:
1. FirebaseUI:Refarence
添加依赖项:
dependencies {
implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
}
然后:
public void onClick(View v) {
if (v.getId() == R.id.sign_out) {
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
// user is now signed out
startActivity(new Intent(MyActivity.this, SignInActivity.class));
finish();
}
});
}
}
2。科特林: Referance
使用 Android 默认身份验证依赖项,例如: com.google.firebase:firebase-auth:16.0.1
firebase.auth().signOut().then(function() {
// Sign-out successful.
}).catch(function(error) {
// An error happened.
});
3。默认为 java:
使用 Android 默认身份验证依赖项,例如: com.google.firebase:firebase-auth:16.0.1
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()
函数,那么将被处理,但如果错误发生在 .then()
块,则它不会被处理。
更好的代码是,
firebase.auth().signOut()
.then(() => {
console.log('Signed Out');
})
.catch(e=>{
console.error('Sign Out Error', e);
});
您可以尝试使用最新的 firebase。它适用于我的 angular firebase 身份验证。
async logout() {
await signOut(this.auth);
localStorage.removeItem("user");
}
根据 documentation,我强制用户使用 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();
以上五个中的每一个我都得到 ... is not a function
。我知道我对新 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 部分中的 remember 参数。
firebase.auth().signOut()
简直对我有用!
有几种注销用户的方法:
1. FirebaseUI:Refarence
添加依赖项:
dependencies {
implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
}
然后:
public void onClick(View v) {
if (v.getId() == R.id.sign_out) {
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
// user is now signed out
startActivity(new Intent(MyActivity.this, SignInActivity.class));
finish();
}
});
}
}
2。科特林: Referance
使用 Android 默认身份验证依赖项,例如: com.google.firebase:firebase-auth:16.0.1
firebase.auth().signOut().then(function() {
// Sign-out successful.
}).catch(function(error) {
// An error happened.
});
3。默认为 java:
使用 Android 默认身份验证依赖项,例如: com.google.firebase:firebase-auth:16.0.1
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()
函数,那么将被处理,但如果错误发生在 .then()
块,则它不会被处理。
更好的代码是,
firebase.auth().signOut()
.then(() => {
console.log('Signed Out');
})
.catch(e=>{
console.error('Sign Out Error', e);
});
您可以尝试使用最新的 firebase。它适用于我的 angular firebase 身份验证。
async logout() {
await signOut(this.auth);
localStorage.removeItem("user");
}