Java 卸载应用程序后,创建新用户而不是从Firebase获取用户ID

Java 卸载应用程序后,创建新用户而不是从Firebase获取用户ID,java,android,firebase,firebase-authentication,Java,Android,Firebase,Firebase Authentication,我的应用程序在启动期间创建匿名用户ID,但在卸载后我的应用程序使用新ID创建新用户。我如何获得卸载前的用户ID 我的匿名登录代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar

我的应用程序在启动期间创建匿名用户ID,但在卸载后我的应用程序使用新ID创建新用户。我如何获得卸载前的用户ID

我的匿名登录代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

    mAuth = FirebaseAuth.getInstance();
    
    
            if(mAuth.getCurrentUser() == null){
                createUser();
            }else{
                user = mAuth.getCurrentUser();
            }

  }

 public void createUser() {


        mAuth.signInAnonymously().addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(task.isSuccessful()){
                    Log.d("TAG", "signIn: succes");
                }else{
                    Log.w("TAG", "signIn: fail");
                }
            }
        });

    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
mAuth=FirebaseAuth.getInstance();
if(mAuth.getCurrentUser()==null){
createUser();
}否则{
user=mAuth.getCurrentUser();
}
}
public void createUser(){
mAuth.signinanoymously().addOnCompleteListener(这是新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
日志d(“标记”、“签名:成功”);
}否则{
Log.w(“标记”、“签名:失败”);
}
}
});
}

在卸载应用程序之前,将id存储在SharedReferences中。

您可以使用Firebase身份验证创建临时匿名帐户,并仅使用临时匿名帐户与Firebase进行身份验证<代码>匿名身份验证帐户不会在应用程序卸载期间持久存在。卸载应用程序时,本地保存的所有内容都将被删除,包括标识该帐户的匿名身份验证令牌不幸的是,没有简单的方法为用户回收该令牌


相反,您应该鼓励所有用户使用受支持的帐户提供商(
Google
Fabcebook
Twitter
等等)完全登录,这样他们就可以从所有设备登录,而不用担心丢失数据。

好的,但是设备ID连接了一个匿名身份验证,那么为什么它不检查数据库中是否有deviceID并获取id呢?但是卸载应用程序时,共享的引用数据也会被删除。谢谢,所以我将从我的应用程序中获取用户设备id并将其放入数据库,而不是使用Firebase身份验证。这是另一种方法,但我建议您实施Firebase身份验证。是的,但我的应用程序需要匿名登录,所以我认为使用设备ID是最好的办法。谢谢