【问题标题】:Authenticate by Device with Firebase使用 Firebase 通过设备进行身份验证
【发布时间】:2017-08-12 02:53:51
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

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

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

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

    FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
    updateUI(currentUser);
    

    更多信息请参见Firebase Authentication documentation。这也可以在iOS 上找到。

    【讨论】:

    • 例如,匿名用户将他的数据以文档 ID (uid) 保存到 Firestore。过了一会儿,他恢复/重新安装应用程序(从同一设备),他永远无法访问他以前的 uid,因此他无法再访问 Firestore 中的数据。是否可以在 Firebase 中实现调用他以前的 uid?
    • UID 永远无法恢复。如果您想为用户恢复数据,您仍然可以使用 Admin SDK 访问数据。
    猜你喜欢
    • 2023-04-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多