FirebaseAuth不返回当前用户

时间:2019-01-09 17:32:24

标签: android firebase android-activity firebase-authentication

我尝试了这两个代码段,但是似乎都不起作用

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        firebaseAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener(){
            @Override
            public  void  onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                if(user==null){
                    Intent intent = new Intent(MainActivity.this, login.class);
                    startActivity(intent);
                    finish();
                }
            }
        };
    }

和这个:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user == null) {
        Intent intent = new Intent(MainActivity.this, login.class);
        startActivity(intent);
        finish();
    }
}

在某些情况下,getCurrentUser将返回非null的FirebaseUser,但基础令牌无效。例如,如果在另一台设备上删除了用户并且本地令牌尚未刷新,则可能发生这种情况。在这种情况下,您可能会获得一个有效的用户getCurrentUser,但随后对经过身份验证的资源的调用将失败。

getCurrentUser也可能返回null,因为auth对象尚未完成初始化。

如果附加了AuthStateListener,则每次基础令牌状态更改时,都会获得回调。这对于应对上述极端情况很有用。

当我的应用启动时,主活动启动,它应该检查是否有登录用户,否则应重定向到登录活动

问题是当我从应用程序退出然后关闭应用程序并重新打开时,它是从主要活动开始的

0 个答案:

没有答案