我正在编写一个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() {
...
答案 0 :(得分:5)
每次调用FirebaseRef.authAnonymously(...)
时,您都会创建一个新的身份验证会话。此方法只需要调用一次,之后用户将在页面刷新时进行身份验证。另请注意,重新启动应用程序后,您无需再次呼叫FirebaseRef.auth()
,因为该部分会自动为您处理。
如果您要检查用户的当前身份验证状态,并且仅 如果用户当前未通过身份验证,则创建新的身份验证会话,请使用同步访问者进行身份验证状态{ {1}}。
最后,一旦创建了匿名身份验证会话,就不会使用相同的uid创建新会话。该会话将一直有效,直到您的预定义会话到期时间(在您的帐户信息中心中配置)或用户退出为止,之后该uid将永久停用。