使用 Firebase 按设备进行身份验证

bil*_*ob2 5 firebase firebase-authentication

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

我想实现匿名登录,用户只需通过其设备登录即可。我猜测 iOS 和 Android 上的设备没有唯一的 ID.. 所以我想我必须手动生成一个 ID,然后查看它是否已在使用,然后是否重新生成。对于这种事情有解决办法吗?我的解决方案看起来真的很hacky......

我目前的想法,逻辑上是:

  • 生成唯一ID
  • 查询数据库以查看唯一 ID 是否已在使用中
  • 如果是重复前两步
  • 如果不向上推

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

Fra*_*len 3

听起来您正在寻找 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);
            }

            // ...
        }
    });
Run Code Online (Sandbox Code Playgroud)

这会为他们生成一个唯一的 UID,并将其存储在您应用程序的共享首选项中。

下次他们启动应用程序时,系统会读取他们的用户信息,您可以通过以下方式检测用户:

FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
updateUI(currentUser);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Firebase 身份验证文档。这在iOS上也可用。

  • 例如,匿名用户将其数据保存到 Firestore 下的文档 ID (uid) 下。一段时间后,他恢复/重新安装应用程序(从同一设备),他永远无法访问他以前的 uid,因此他无法再访问 Firestore 中的数据。是否可以在Firebase中实现调用他以前的uid? (4认同)