我正在编写一个Android应用程序,并尝试匿名登录用户,这样他们就不必经过任何注册过程。我将他们的匿名用户ID存储在共享首选项中,当应用程序打开时,我会尝试根据该用户ID将他们登录。我正在努力找出正确的方法,因为似乎没有只接受UID的身份验证函数。目前我使用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() {
...
每次调用FirebaseRef.authAnonymously(...)
时都会创建一个新的身份验证会话。此方法只需要调用一次,之后用户将在页面刷新时进行身份验证。还要注意的是,一旦重新启动应用程序,就不需要再次调用FirebaseRef.auth()
,因为这部分内容会自动为您处理。
如果要检查用户的当前身份验证状态,并且仅当在用户当前未通过身份验证的情况下创建新的身份验证会话,请使用身份验证状态FirebaseRef.getAuth()
的同步访问器。
最后,一旦创建了匿名身份验证会话,就不会使用相同的uid创建任何新会话。该会话将一直持续到您预定义的会话到期时间(在您的帐户面板中配置),或者直到您的用户注销,之后该uid将永久失效。