相关疑难解决方法(0)

Firebase停止侦听onAuthStateChanged

从版本^ 3.0.0开始,我很难删除身份验证状态更改侦听器.

要根据文档启动监听器:

firebase.auth().onAuthStateChanged(function (user) {
    // handle it
});
Run Code Online (Sandbox Code Playgroud)

但是,我在文档中找不到任何引用删除身份验证状态更改侦听器的内容.Firebase.Auth类有一个特殊的功能叫做removeAuthTokenListener.不幸的是,它没有记录(firebase文档参考).

通过浏览器的Web控制台.

var auth = firebase.auth();
auth.removeAuthTokenListener;
Run Code Online (Sandbox Code Playgroud)

打印一个带有一个参数的函数定义.我试着做以下事情:

this.authListener = firebase.auth().onAuthStateChanged(function (user) {...});
firebase.auth().removeAuthTokenListener(this.authListener);
Run Code Online (Sandbox Code Playgroud)

但那没有做任何事情.

javascript firebase firebase-authentication

41
推荐指数
2
解决办法
2万
查看次数

Firebase Android onAuthStateChanged调用了两次

我已开始使用新的Firebase SDK.

当我正在进行用户登录时,我的onAuthStateChanged方法被调用两次,状态相同(等用户登录).

我确定我只将一次AuthStateListener添加到FirebaseAuth引用中.

有帮助吗?

android firebase firebase-authentication

32
推荐指数
3
解决办法
6463
查看次数

为什么在firebase onAuthStateChanged中完成活动时,最近的应用程序中没有屏幕截图

我有一个非常基本的splashscreen活动:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start);

    FirebaseAnalytics.getInstance(this);


    mAuth = FirebaseAuth.getInstance();
    mAuth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                FirebaseAuth.getInstance().removeAuthStateListener(this);
                startActivity(new Intent(StartActivity.this, MainActivity.class));
                finish();
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这个启动画面打开我的MainActivity.当我关闭此活动时,这是最近的应用程序中的屏幕截图:

在此输入图像描述

好像它制作截图太晚了,导致这个嵌套的最近应用截图.这也发生在实际设备上.我怎样才能解决这种奇怪的行为?

活动清单:

<activity
    android:name="activities.StartActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name="activities.MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:launchMode="singleTask">
</activity>
Run Code Online (Sandbox Code Playgroud)

问题似乎不在于launchMode.我一直有同样的行为.即使拆除了lauchmode.

它与回调绝对有关.直接启动活动时,没有问题.

编辑:

我找到了一个解决方案.使用延迟启动活动会解决它.虽然硬编码延迟不是很好.

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-authentication

10
推荐指数
1
解决办法
248
查看次数