使用生成的匿名登录ID登录用户

时间:2014-11-03 18:34:40

标签: firebase

我正在编写一个Android应用程序,我正在尝试匿名登录用户,因此他们不必经历任何类型的注册过程。我将他们的匿名用户ID存储在共享首选项中,当应用程序打开时,我尝试根据该用户ID登录它们。我试图弄清楚这样做的正确方法,因为它似乎不是一个只接受UID的auth函数。目前我使用auth(),但我不觉得这是正确的。

以下是一些示例代码:

String userID = getUserID();

    if(userID.equals("NOT_FOUND")) {
        ref.authAnonymously(new Firebase.AuthResultHandler() {
            @Override
            public void onAuthenticated(AuthData authData) {
                //successful authentication
                //save auth data
                SharedPreferences prefs = getSharedPreferences(
                        "USER_ID", Context.MODE_PRIVATE);
                String id = authData.getUid();
                prefs.edit().putString("USER_ID", id).commit();
            }

            @Override
            public void onAuthenticationError(FirebaseError firebaseError) {
                //unsuccessful authentication
            }
        });
    } else {
        ref.auth(userID, new Firebase.AuthListener() {
           ...

1 个答案:

答案 0 :(得分:5)

每次调用FirebaseRef.authAnonymously(...)时,您都会创建一个新的身份验证会话。此方法只需要调用一次,之后用户将在页面刷新时进行身份验证。另请注意,重新启动应用程序后,您无需再次呼叫FirebaseRef.auth(),因为该部分会自动为您处理。

如果您要检查用户的当前身份验证状态,并且 如果用户当前未通过身份验证,则创建新的身份验证会话,请使用同步访问者进行身份验证状态{ {1}}。

最后,一旦创建了匿名身份验证会话,就不会使用相同的uid创建新会话。该会话将一直有效,直到您的预定义会话到期时间(在您的帐户信息中心中配置)或用户退出为止,之后该uid将永久停用。