Firebase匿名身份验证相同参考对象问题

时间:2020-04-23 23:44:22

标签: java android firebase firebase-authentication anonymous

使用非匿名帐户(Google登录名,Facebook登录名等)登录时,我想删除Firebase身份验证数据库中的匿名帐户。

在下面的代码中,当用户打开应用程序匿名帐户创建成功,并且我将匿名FirebaseUser对象设置为firebaseUserAnonymous时。

但是当我使用Google帐户uidOlduidNew登录时,ID每次都相同!

因此,我调试了代码,看到onAuthStateChanged方法的FirebaseUser对象与设置的firebaseUserAnonymous对象之前是相同的!

如果从未(firebaseUserAnonymous != null && !uidNew.equals(uidOld))调用,因为新的firebaseUser对象和旧的firebaseUserAnonymous对象总是相同的引用

因此,onAuthStateChanged方法在使用新的匿名登录名或Google登录名时始终使用相同的对象。

当用户使用google登录时,如何删除旧的FirebaseUser匿名对象?

private FirebaseUser firebaseUserAnonymous;

FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

        if (firebaseUser == null) {//When first open or logout
            FirebaseAuth.getInstance().signInAnonymously();
        } else {
            String uidOld = firebaseUserAnonymous != null ? firebaseUserAnonymous.getUid() : null;
            String uidNew = firebaseUser.getUid();

            if (firebaseUserAnonymous != null && !uidNew.equals(uidOld)) {//Must be call when user login after google login for delete old anonymous account, but never calling
                firebaseUserAnonymous.delete();
            }

            if (firebaseUser.isAnonymous()) {
                firebaseUserAnonymous = firebaseUser;
            }
        }
    }
});

0 个答案:

没有答案