首页 > 解决方案 > 尝试检查首次 Firebase 登录

问题描述

我的应用使用 Firebase 的 AuthUi 对用户进行身份验证。因为我希望他们拥有唯一的用户名,所以我试图创建第二个活动,允许他们创建唯一的 ID,但前提是这是他们第一次登录应用程序。我正在尝试对照 getLastSignInTimestamp 检查 getCreationTimeStamp 以实现此目的。无论他们是否是第一次登录,以下代码都会将他们发送到用户名创建屏幕:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);


if (requestCode == FB_AUTH_SIGN_IN) {
            IdpResponse response = IdpResponse.fromResultIntent(data);

        if (resultCode == RESULT_OK) {


           FirebaseUserMetadata metadata = user.getMetadata();
            if (metadata.getCreationTimestamp() == metadata.getLastSignInTimestamp()) {
                Intent intent = new Intent(ChatListActivity.this, ChooseUsername.class);
                startActivity(intent);
            } else {
                launchPlacePicker();
            }

我对这些元数据方法有误解吗?有没有更好的方法来实现我想要做的事情?

标签: javaandroidfirebase

解决方案


您可以使用这段代码来确认应用程序首次在设备上运行。

但是,每次用户卸载然后重新安装应用程序以启动时,都会执行此操作。

 boolean firstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);
        if (firstRun){
            // do what you want to do for the first time user interacting with your app
            getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("firstrun", false).apply();
            }

而且,如果您想为用户提供永久的东西。我建议您在您的 Firebase 数据库中为此在您的用户字段中创建一个特殊节点。

您可以将其设置为true仅当用户创建新 ID 时,然后删除节点或将值设置为false之后永远。


推荐阅读