2017-02-04 14 views
5

Chciałbym utworzyć nowe konto użytkownika z mojej aplikacji po zalogowaniu się jako „użytkownik admin”, problem jest po prostu chcę, aby go utworzyć nie faktycznie zalogowany.Firebase utworzyć użytkownika bez znaku w

jest to możliwe wyłączenie automatycznego logowania podczas tworzenia nowego użytkownika za pomocą adresu e-mail/hasła.

Widzę, że inni zadali to pytanie w odniesieniu do JS i szybkich, ale nie mogą znaleźć żadnych powiązanych z Androidem informacji. staram się osiągnąć to samo, co this person ale z Androidem

każda pomoc mile widziane

+0

Zobacz http://stackoverflow.com/a/38013551/209103 –

Odpowiedz

3

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.

+0

. Doceniam, że odpowiedziałeś, ale to nie rozwiąże mojego problemu, spowoduje to wylogowanie użytkownika z systemu i będzie musiał zalogować się ponownie jako Administrator, chcę pozostać zalogowany jako administrator i utworzyć nowy AC, administrator może tworzyć wiele kont, więc wylogowanie się i powrót po każdym dniu jest niepraktyczny – RoRo88

+0

@ RoRo88: Zaktualizowano moją odpowiedź po przetestowaniu go. To rozwiąże twój problem –

Powiązane problemy