- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前正在研究如何在 Android (MVP) 中使用 Firebase Auth。我的流程是这样的:
Activity > Presenter > Interactor > AuthHelper
Activity < Presenter < Interactor < AuthHelper
Auth Helper 类是唯一与 FirebaseAuth
实例直接交互的类。我的问题是关于 AuthStateListener 在这种情况下的工作方式:
FirebaseAuth.AuthStateListener
Interactor 初始化 Auth Helper 类,传递 AuthStateListener
class MyInteractor implements FirebaseAuth.AuthStateListener {
FirebaseAuth.AuthStateListener listener;
public MyInteractor(){
MyHelper myHelper = new MyHelper(this);
listener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
Log.d("TAG", "onAuthStateChanged called");
}
};
}
public void signOut(){
myHelper.signOut();
}
}
Helper 将 FirebaseAuthInstance
传递给监听器
class MyHelper {
private static FirebaseAuth mAuth;
public MyHelper(FirebaseAuth.AuthStateListener listener){
mAuth = FirebaseAuth.getInstance();
listener.onAuthStateChanged(mAuth);
}
public void signOut(){
mAuth.signOut();
}
}
myHelper.signOut()
被调用
预期结果:
交互器中的onAuthStateChanged()
将被触发。
收到的结果:
onAuthStateChanged()
没有被触发。
我尝试了一种不同的方法,我在调用 signOut()
之后传递了 mAuth
:
public void signOut(){
mAuth.signOut();
listener.onAuthStateChanged(mAuth);
}
这会触发 onAuthStateChanged
。我在这里遗漏了什么吗?
最佳答案
经过更多的研究,我意识到
FirebaseAuth.getInstance().addAuthStateListener(listener)
是我在流程中真正需要使用的,而不是 FirebaseAuth.AuthStateListener(mAuth)
。我误解了它的工作方式,结果却害了我。
引用 this answer作为主要的保护者。
关于android - FirebaseAuth.AuthStateListener.onAuthStateChanged(mAuth) 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45228320/
当用户访问我的站点时,我使用 onAuthStateChanged确定用户是否已经从先前的 session 中登录。 主要问题是它对于一小部分用户来说是不一致的 - 代码似乎没有检测到他们确实有一个有
这个问题在这里已经有了答案: Firebase stop listening onAuthStateChanged (2 个答案) 关闭 6 年前。 以前我在 firebase.auth.curre
我正在尝试制作一个跟踪用户身份验证状态的模块。目前看起来像这样: import FbApp from './firebase-app'; var AuthStatus = { LoggedIn
当我登录后立即刷新网页时,以下代码会生成一个空用户。此外,当访问 token 过期时,页面会自动注销。如何解决这个问题? function initApp() { firebase.auth(
我一直在为 React Native 应用程序使用 Firebase 匿名身份验证,主要是为了确保用户只能读/写他们自己的数据(例如检查安全规则中的 auth && auth.uid) 以前,使用 F
在我的flutter应用程序中,我尝试使用Provider包中的ChangeNotifier将Firebase用户对象传递给降序的小部件。我的第一个想法是在StreamBuilder中执行以下操作:
我正在使用Firebase身份验证和Firestore数据库创建一个flutter应用程序,以存储用户个人资料。 验证用户身份后,我想将用户的个人资料文档作为流获取,并提供给所有小部件使用。 这是我的
我希望在我的应用中的用户状态发生变化时收到通知。我的意思是,当它刚刚登录和刚刚注销时。我不想在刷新用户 token 或每次应用程序启动并且用户自动登录时收到通知。 我正在使用预期的处理程序: Fire
我有这段代码可以检查用户是否已经在 Firebase 中登录,如果是,则使用 Redux 分派(dispatch)操作并将状态更新为当前授权用户。 /** * check to see if the
我是 Firebase 的新手。我正在尝试使用 React + Redux 登录。当我点击“登录”时,它将让我登录一次,然后再次调用 onAuthStateChanged 并且 res 为空,这让我退
我完全知道 onAuthStateChange 函数在注册后立即触发,但事实并非如此。在用户使用用户名和密码登录后,我遇到此功能触发两次的问题。第一次启动时,我追溯到堆栈,它来 self 的代码,但第
我在 login.html 中使用 Firebase 基于密码的身份验证。我有 2 个文本框和 3 个按钮。 我使用 firebase.OnAuthStateChanged 来了解用户是否登录或注销。
从版本 ^3.0.0 开始,我很难删除身份验证状态更改监听器。 根据文档启动监听器: firebase.auth().onAuthStateChanged(function (user) {
首次安装时,应用程序运行没有任何问题。 在启动画面检查登录状态。 用户未登录,导航到登录屏幕。 但 unsubscribe() 不是函数 当应用程序最小化然后重新打开时,错误显示并停留在启动画面。这只
当我将鼠标悬停在 onAuthStateChanged 上时,它会显示: (method) firebase.auth.Auth.onAuthStateChanged(nextOrObserver:
所以我在关注一个关于创建谷歌登录的教程。他说你需要使用 onAuthStateChanged收听登录/退出。我不明白的部分是他说该方法就像“开放订阅”,我们需要“关闭订阅”以防止内存泄漏。 所以在你看
在放弃运行 Express 的自己的 NodeJS 后端后,我们一直在应用程序上使用 Firebase,在此过渡期间,我们注意到一个主要缺点。客户端接收初始身份验证状态所需的时间。 当我的应用程序打开
我正在使用 firebase 创建一个应用程序。加载任何页面时,我都会通过以下代码检查身份验证。当我从登陆页面调用 isAuthenticated 时,即使用户已经登录并且持久性是 LOCAL( ht
我按照 Stack Overflow - How to redirect after a user signs in with Firebase authentication? 的说明进行操作 ind
目前我有一个授权系统来使用 angularfire 跟踪用户登录/注销状态。我正在查看的指南建议在每个 Controller 中使用 $onAuthStateChanged 。 $rootScope.
我是一名优秀的程序员,十分优秀!