o to sprawdzone rozwiązanie można zastosować (realizowane tylko kilka minut wcześniej).
Aby utworzyć nowe konto użytkownika, należy podać numer referencyjny: FirebaseAuth
.
Więc można utworzyć dwa różne obiekty FirebaseAuth jak:
private FirebaseAuth mAuth1;
private FirebaseAuth mAuth2;
Teraz w onCreate można zainicjować je jako:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mAuth1 = FirebaseAuth.getInstance();
FirebaseOptions firebaseOptions = new FirebaseOptions.Builder()
.setDatabaseUrl("[Database_url_here]")
.setApiKey("Web_API_KEY_HERE")
.setApplicationId("PROJECT_ID_HERE").build();
FirebaseApp myApp = FirebaseApp.initializeApp(getApplicationContext(),firebaseOptions,
"AnyAppName");
mAuth2 = FirebaseAuth.getInstance(myApp);
//..... other code here
}
Aby uzyskać ProjectID, klucz WebAPI można przejść do projektu Ustawienia w konsoli projektu Firebase.
teraz, aby utworzyć konto użytkownika, trzeba użyć mAuth2, nie mAuth1. A następnie po pomyślnej rejestracji można wylogować użytkownika mAuth2.
Przykład:
private void createAccount(String email, String password)
{
mAuth2.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
String ex = task.getException().toString();
Toast.makeText(RegisterActivity.this, "Registration Failed"+ex,
Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(RegisterActivity.this, "Registration successful",
Toast.LENGTH_SHORT).show();
mAuth2.signOut();
}
// ...
}
});
}
Punkt, w którym trzeba się martwić (w rzeczywistości nie):
Administrator powinien mieć możliwość tworzenia nowych kont użytkowników tylko. Powyższe rozwiązania umożliwiają wszystkim uwierzytelnionym użytkownikom utworzenie nowego konta użytkownika.
Aby rozwiązać ten problem, możesz skorzystać z bazy danych w czasie rzeczywistym. Po prostu dodaj klucz taki jak "is_user_admin
" i ustaw wartość jako true
z samej konsoli. Musisz tylko zweryfikować użytkownika, zanim ktoś spróbuje utworzyć nowe konto użytkownika. Za pomocą tego podejścia możesz ustawić własnego administratora.
Do tej pory nie sądzę, że istnieje firebase-admin SDK
dla Androida. Tak więc można zastosować powyższe podejście.
Zobacz http://stackoverflow.com/a/38013551/209103 –