android– 禁用或删除用户时不会触发Firebase身份验证状态更改

android– 禁用或删除用户时不会触发Firebase身份验证状态更改,第1张

概述在引擎盖下我在Android应用中使用Firebase身份验证,使用Google,Facebook和电子邮件/密码注册用户.到目前为止,除了单个场景之外,几乎所有内容都能正常工情景我需要禁用或删除Firebase控制台中的用户帐户,以禁止我的应用的某些用户.在这种情况下,当我禁用或删除该特定用户时,用

在引擎盖下

我在Android应用中使用Firebase身份验证,使用Google,Facebook和电子邮件/密码注册用户.到目前为止,除了单个场景之外,几乎所有内容都能正常工

情景

我需要禁用或删除Firebase控制台中的用户帐户,以禁止我的应用的某些用户.

在这种情况下,当我禁用或删除该特定用户时,用户必须立即从应用程序注销,并且不能再使用它.

错误

我已经使用AuthStateListener来监听身份验证状态更改,并在他们的帐户被禁用或删除后自动注销用户.

FirebaseAuth.getInstance().addAuthStateListener(firebaseAuth -> {            if (firebaseAuth.getCurrentUser() == null) {                Intent intent = AuthFlowActivity.getCallingIntent(AuthFlowActivity.FORCE_logoUT);                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);                startActivity(intent);                activityExitAnimation(BaseAppActivity.this);            }        });

但我从未见过AuthStateListener触发这些 *** 作的任何事件.所以我无法立即注销用户,用户仍然可以继续使用该应用程序.

如果有人可以帮助解决这个问题,我将不胜感激.

解决方法:

禁用或删除用户帐户不会触发身份验证状态更改.也不应该,用户仍然是经过身份验证的.在最多一个小时内,Firebase身份验证将尝试刷新用户的访问令牌.刷新将失败,此时用户将变为未经身份验证并且将激活身份验证状态更改事件.

如果您希望立即撤销用户的授权,则必须在应用程序逻辑的另一部分中执行此 *** 作.一种常见的方法是在应用程序中使用黑名单,例如:在Firebase Database:

/bannedUsers    uIDOfBannedUser: true

现在,当您在Autentication面板中删除/禁用用户帐户时,还会将其uID添加到数据库中禁止用户的列表中.

然后,通过向您的database security rules添加一个条款,例如,可以保护数据库免受未授权用户的访问.

{  "rules": {    "bannedUsers": {      ".read": true,      ".write": false // only @R_403_5976@s can write these    },    "messages": {      ".read": "auth != null && !root.child('bannedUsers').child(auth.uID).exists()"    }  }}

如果使用不同的后端,则实现方式会有所不同.但像这样的黑名单是禁止用户的常用方法.你会发现你甚至可能不太关心他们只禁止他们的身份验证,而不是删除他们的凭据(他们可以简单地重新创建).

总结

以上是内存溢出为你收集整理的android – 禁用或删除用户时不会触发Firebase身份验证状态更改全部内容,希望文章能够帮你解决android – 禁用或删除用户时不会触发Firebase身份验证状态更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102573.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存