使用Firebase通过设备进行身份验证

使用Firebase通过设备进行身份验证,firebase,firebase-authentication,Firebase,Firebase Authentication,如果这是一个简单的问题,很抱歉。。但我似乎找不到一个好的答案 我想实现一个匿名登录,用户只需通过他们的设备登录即可。我猜iOS和Android上的设备没有唯一的ID。。所以我想我必须手动生成一个ID,然后看看它是否已经在使用,然后看看它是否是regeneerate。这类事情有解决办法吗?我的解决方案似乎真的很难 我目前的想法,逻辑方面是: 生成唯一ID 查询数据库以查看是否已在使用唯一ID 如果是,请重复前两步 如果不是俯卧撑 我需要能够跟踪哪些设备已将哪些信息推送到数据库,但我不想让用户必

如果这是一个简单的问题,很抱歉。。但我似乎找不到一个好的答案

我想实现一个匿名登录,用户只需通过他们的设备登录即可。我猜iOS和Android上的设备没有唯一的ID。。所以我想我必须手动生成一个ID,然后看看它是否已经在使用,然后看看它是否是regeneerate。这类事情有解决办法吗?我的解决方案似乎真的很难

我目前的想法,逻辑方面是:

  • 生成唯一ID
  • 查询数据库以查看是否已在使用唯一ID
  • 如果是,请重复前两步
  • 如果不是俯卧撑

我需要能够跟踪哪些设备已将哪些信息推送到数据库,但我不想让用户必须登录或提供任何信息。

听起来你在寻找Firebase的匿名身份验证。用户首次启动应用程序时,您可以使用以下内容登录:

FirebaseAuth.getInstance().signInAnonymously()
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInAnonymously:success");
                FirebaseUser user = mAuth.getCurrentUser();
                updateUI(user);
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInAnonymously:failure", task.getException());
                Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                        Toast.LENGTH_SHORT).show();
                updateUI(null);
            }

            // ...
        }
    });

有关更多信息,请参阅。这也可以在上找到。

例如,匿名用户在文档id(uid)下将其数据保存到Firestore。一段时间后,他恢复/重新安装了应用程序(从同一设备),他无法访问以前的uid,因此,他无法再访问Firestore中的数据。可以在Firebase中实现调用他以前的uid吗?该uid永远无法恢复。如果要为用户恢复数据,您仍然可以使用AdminSDK访问数据。
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
updateUI(currentUser);