我目前正在尝试创建一个自动检测帐户是否已被停用的功能。
据此,我的意思是我希望用户自动注销,而无权执行任何操作。
我知道有关权限的内容是在firebase security& amp;规则。但是,我不知道如何禁止禁用帐户的活动。我只熟悉auth.uid和变量。
如果我想这样做,我该怎么办?
我已经尝试了为每个表单重新验证用户的想法,但我很快发现这将是不必要的数据使用。
或者这是要走的路?
答案 0 :(得分:1)
其中一种方法是使用身份验证。您需要重新验证firebase用户:
user?.reauthenticateWithCredential(credential) { error in
if let error = error {
// An error happened.
} else {
// User re-authenticated.
}
}
如果帐户被禁用,则会收到FIRAuthErrorCodeUserDisabled错误。 以某个时间间隔循环运行它。
答案 1 :(得分:0)
我重新加载了当前用户,如果它被禁用,您将收到错误:
devDependencies
答案 2 :(得分:0)
您刚才问过,希望答案仍然有帮助:
您可以为authStateDidChange添加一个观察者,因此如果用户注销,它会被触发
NotificationCenter.default.addObserver(forName: NSNotification.Name.AuthStateDidChange, object: Auth.auth(), queue: nil) { _ in
if ((Auth.auth().currentUser) == nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let mvc = storyboard.instantiateViewController(withIdentifier: "MainViewController")
self.window!.rootViewController = mvc
let options: UIView.AnimationOptions = .transitionCrossDissolve
let duration: TimeInterval = 0.1
UIView.transition(with: self.window!, duration: duration, options: options, animations: {}, completion:
{ completed in
self.window?.rootViewController?.performSegue(withIdentifier: "showWelcomeView", sender: nil)
})
}
}
现在很酷的事情是,如果您像前面提到的MegaChan那样调用reload命令,并且用户被禁用或删除,firebase控制器会将用户注销,观察者将authstate更改并且您的登录屏幕,在我的情况下welcomeviewcontroller出现;)