根据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();
不会引发错误。我还在控制台中迁移了应用程序。
答案 0 :(得分:76)
在JavaScript中,您可以使用以下命令注销用户:
firebase.auth().signOut().then(function() {
console.log('Signed Out');
}, function(error) {
console.error('Sign Out Error', error);
});
答案 1 :(得分:5)
firebase.auth().signOut()
只是它对我有用!
答案 2 :(得分:1)
我不知道我是否正确理解,但如果您要签署每个登录的用户: 由于代码在客户端上运行,因此无法实现,而auth状态是指运行它的客户端。
您无法访问连接到firebase身份验证服务的每个客户端,因为这意味着在服务器端运行代码。
但是,可以选择指定会话的持续时间,即auth部分中的记住参数。
答案 3 :(得分:1)
有多种方法可以退出用户:
<强> 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。 Kotlin: 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();
}
答案 4 :(得分:1)
扩展@Frank van Puffelen的答案,此代码的工作原理很吸引人,但是在@Service
public class SomeService implements FilteredResultsService {
@Autowired
SomeDao someDao;
@Override
public List<SomeEntity> getFilteredResults(Filter filter, Integer size) {
return this.someDao.findAll(filter, PageRequest.of(0, size)).getContent();
}
}
函数中将拒绝处理作为第二个参数,这是一种不好的做法。
而是添加一个// a Map of Spring beans of type FilteredResultsService, where
// the key is the name of the bean and the value is the bean object
@Autowired
private Map<String, FilteredResultsService> serviceBeans;
@PostMapping(value = "method-call/{serviceName}", produces = MediaType.APPLICATION_JSON_VALUE)
public Object executeMethod(@PathVariable("serviceName") String serviceName,
@RequestBody Filter filter, @RequestParam(required = false) Integer size) {
FilteredResultsService service = serviceBeans.get(serviceName);
if (service == null) {
// invalid serviceName, throw an error
}
return service.getFilteredResults(filter, size);
}
块。
因为,如果在from collections import Counter
def elem_max(tup):
b= Counter(tup)
out=max(b.items(),key=lambda x:x[1])
if(out[1] ==1):
return 0
else:
return out[0]
函数中发生错误,则将对其进行处理,但是如果在tup1 = (1,-1,1)
tup2 = (1, 0, -1)
print(elem_max(tup1)) # 1
print(elem_max(tup2)) # 0
块中发生错误,则将不对其进行处理。
更好的代码是
then()