所以我使用Firebase身份验证(只包含电子邮件和密码)构建了一个简单的应用程序,它运行良好,但为了TestFlight我的注册/登录页面,我需要删除所有注册了以前的应用程序,只是发现删除控制台上的用户实际上并没有在应用程序中取消它们。我想有一种方法可以在Firebase控制台中检查用户的身份验证状态(如果它们存在或至少存在),但我找不到保存生命的功能。欢迎任何帮助和赞赏!
答案 0 :(得分:3)
我遇到了同样的问题,并找到了我以后一直在使用的解决方法。相反,我只是在/ users(我为用户创建的类别)中查询我的数据库,并检查我当前的ID是否存在。如果没有,我知道该帐户已被删除。这意味着您需要在注册时在/ users中创建包含userID的条目,并在删除帐户时删除此条目。要查看当前经过身份验证的用户是否已删除,请执行以下操作:
NSString *currentID=[[FIRAuth auth].currentUser uid];
[[[[[FIRDatabase database]reference]child:@"users"]child:currentID]observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
if (snapshot!=[NSNull Null]) {
//User still exists
} else {
//Account no longer exists (deleted)
}
}];
答案 1 :(得分:2)
我花了一整天的时间来发布这个尝试执行白名单解决方案并且无法使其工作。然而,我的一个朋友给我发了一个类似于此的解决方案,它就像一个魅力。
func checkUserAgainstDatabase(completion: (success: Bool, error: NSError?) -> Void) {
guard let currentUser = FIRAuth.auth()?.currentUser else { return }
currentUser.getTokenForcingRefresh(true) { (idToken, error) in
if let error = error {
completion(success: false, error: error)
print(error.localizedDescription)
} else {
completion(success: true, error: nil)
}
}
}
答案 2 :(得分:1)
以下代码可在android上很好地工作,以确认Firebase Auth用户是否仍然存在(尚未删除或禁用)并具有有效的凭据。
从Firebase控制台删除Auth用户不会撤消该用户当前登录的设备上的auth令牌,因为该令牌是本地缓存的。使用reload()会强制检查Firebase身份验证服务器。
ini_set('session.cookie_secure', '1');
ini_set('session.cookie_httponly', '1');
ini_set('session.use_only_cookies', '1');
session_start();
<script type="text/javascript">
var a = document.cookie;
alert(a);
</script>