我已經爲Firebase創建了一個登錄系統。用戶可以使用用戶名或密碼進行身份驗證。這可以通過在Firebase數據庫中創建鏈接用戶名和電子郵件的表來實現。使用用戶名原子的Firebase用戶註冊
問題是,當用戶註冊時,他可以對「firebase」的createUserWithEmailAndPassword()調用和將用戶添加到數據庫的完成處理程序之間做任何事情。例如:回到上一個活動,使用onpause暫停應用程序,旋轉屏幕,... 如果用戶正在做這些事情,則可能是用戶已註冊但未寫入數據庫
我如何確保這筆交易是全部還是全無?我想過使用intentservice,完成後會自行停止,但是這真的是要走的路嗎?
private void register(final String email,final String username,final String password)
{
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task)
{
Log.d("FIREBASE Register", "createUserWithEmail:onComplete:" + task.isSuccessful());
showProgress(false);
if(task.isSuccessful())
{
Resources res = getResources();
SharedPreferences prefs = getSharedPreferences(res.getString(R.string.package_name), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("email", email);
editor.putString("password", password);
editor.commit();
// Write new user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
writeNewUser(user.getUid(), username, email);
// Send verification email
sendVerificationEmail();
// Sign out the user, to block the loginActivity from logging in the user (the email isn't verified)
FirebaseAuth.getInstance().signOut();
}
}
}
該任務由firebase在後臺處理,你不必做任何事情 –
不,當你需要額外的電話到firebase存儲用戶名 – PrisonMike
你試過了嗎? –