使用非匿名帐户(Google登录名,Facebook登录名等)登录时,我想删除Firebase身份验证数据库中的匿名帐户。
在下面的代码中,当用户打开应用程序匿名帐户创建成功,并且我将匿名FirebaseUser
对象设置为firebaseUserAnonymous
时。
但是当我使用Google帐户uidOld
和uidNew
登录时,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;
}
}
}
});