Вот это проверенное решение можно применить (только реализовать несколько минут раньше).
Для создания новой учетной записи пользователя требуется ссылка FirebaseAuth
.
Таким образом, вы можете создать два различных объектов FirebaseAuth как:
private FirebaseAuth mAuth1;
private FirebaseAuth mAuth2;
Сейчас в OnCreate вы можете инициализировать их как:
@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
}
Чтобы получить ProjectID, ключ WebAPI вы можете перейти к Project Settings в вашей консоли проектора firebase.
Теперь, чтобы создать учетную запись пользователя, вы должны использовать mAuth2, а не mAuth1. И затем при успешной регистрации вы можете выйти из этого пользователя mAuth2.
Пример:
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();
}
// ...
}
});
}
Точка, в которой вы должны беспокоиться (на самом деле нет):
Администратор должен только быть в состоянии создать новые учетные записи пользователей. Но вышеупомянутые решения позволяют всем аутентифицированным пользователям создавать новую учетную запись пользователя.
Чтобы решить эту проблему, вы можете обратиться за помощью к своей базе данных базы данных firebase. Просто добавьте ключ, например «is_user_admin
», и установите значение как true
с самой консоли. Вам просто нужно проверить пользователя, прежде чем кто-то попытается создать новую учетную запись пользователя. И используя этот подход, вы можете установить свой собственный администратор.
На данный момент, я не думаю, что есть firebase-admin SDK
для android. Таким образом, можно использовать вышеупомянутый подход.
См. Http://stackoverflow.com/a/38013551/209103 –