Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase匿名登录问题_Firebase - Fatal编程技术网

Firebase匿名登录问题

Firebase匿名登录问题,firebase,Firebase,我正在编写一个android应用程序,并为用户使用firebase匿名身份验证。当程序第一次安装在设备上时,我使用该设备的匿名登录创建唯一id,然后将其存储在内存中,然后始终使用该唯一id作为该设备的唯一用户名。这是我的密码: public String getUserId() { SharedPreferences prefs = getSharedPreferences("USER_ID", Context.MODE_PRIVATE); String

我正在编写一个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();
        }

    }
}
在这里,我关心的是该id的唯一性。firebase匿名登录是否在在线匿名用户中提供了唯一的id,还是提供了基于应用程序的唯一id?这里有没有可能两台设备被赋予相同的id?如果有机会,我在哪里可以检查该id是否存在?(我还将给定的id存储在firebase存储库中,我想检查该id以前是否已给定)


感谢为匿名身份验证生成的UID。非常类似于,它使用当前时间戳和随机性的组合来产生本质上唯一的id。非常、非常、非常不可能有另一个用户具有相同的id,甚至应用程序都不应该检查


但是,如果您真的想检查,您可以让您的客户使用Firebase事务写入
/users/
,并确保以前没有其他客户写入该位置。

谢谢您的回答!