Firebase匿名登录问题

yra*_*lik 2 firebase

我正在编写一个Android应用程序并为用户使用firebase匿名身份验证.当程序首次安装在设备上时,我使用该设备的匿名登录来创建唯一ID,然后将其存储在内存中,然后始终将该唯一ID用作该设备的唯一用户名.这是我的代码:

public String getUserId() {
    SharedPreferences prefs = getSharedPreferences("USER_ID",
            Context.MODE_PRIVATE);
    String id = prefs.getString("USER_ID", "NOT_FOUND");
    return id;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String userId = getUserId();
    if (userId.equals("NOT_FOUND")) {
        if (f == null) {
            f = new Firebase(
                    "https://marketlist.firebaseio.com/sharedlists");
        }

        try {
            Firebase ref = f.getParent();
            SimpleLogin authClient = new SimpleLogin(ref);

            authClient
                    .loginAnonymously(new SimpleLoginAuthenticatedHandler() {

                        @Override
                        public void authenticated(Error error, User user) {
                            if (error != null) {
                                System.out.println("");
                            } else {
                                // We are now logged in
                                String id = user.getUid();
                                SharedPreferences prefs = getSharedPreferences(
                                        "USER_ID", Context.MODE_PRIVATE);
                                prefs.edit().putString("USER_ID", id)
                                        .commit();

                            }

                        }
                    });
            Firebase.goOffline();
        } catch (Exception ex) {
            Firebase.goOffline();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

在这里我关心那个id的独特性.firebase匿名登录是否在在线匿名用户中提供唯一ID,或者它是否提供基于应用程序的唯一ID?这两个设备有可能被赋予相同的ID吗?如果有机会,我在哪里可以检查该ID是否存在?(我还将给定的id存储在firebase存储库中,我想检查之前是否给出了id).

谢谢

Rob*_*rco 5

为匿名身份验证生成的uids.与UUID(v4)非常相似,它使用当前时间戳和随机性的组合来提出一个本质上唯一的id.非常非常非常不可能会有另一个具有相同ID的用户,甚至是您的应用程序甚至不应该检查的用户.

但是,如果您确实想要检查,则可以让客户/users/<uid>使用Firebase事务进行写入,并确保之前没有其他客户端写入该位置.