Dưới đây là một giải pháp thử nghiệm, bạn có thể áp dụng (chỉ cần thực hiện một vài phút trước đó).
Để tạo tài khoản người dùng mới, bạn cần tham chiếu FirebaseAuth
.
Vì vậy, bạn có thể tạo ra hai đối tượng FirebaseAuth khác nhau như:
private FirebaseAuth mAuth1;
private FirebaseAuth mAuth2;
Bây giờ trong onCreate bạn có thể khởi tạo chúng như:
@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
}
Để có được ProjectID, WebAPI chìa khóa bạn có thể vào Dự án Cài đặt trong bảng điều khiển dự án firebase của bạn.
Bây giờ, để tạo tài khoản người dùng, bạn phải sử dụng mAuth2, không phải mAuth1. Và sau đó khi đăng ký thành công, bạn có thể đăng xuất người dùng mAuth2 đó.
Ví dụ:
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();
}
// ...
}
});
}
Các điểm mà bạn phải lo lắng (trên thực tế không):
Các admin chỉ nên có thể tạo tài khoản người dùng mới. Nhưng các giải pháp trên là cho phép tất cả người dùng được xác thực tạo tài khoản người dùng mới.
Vì vậy, để giải quyết vấn đề này, bạn có thể nhận trợ giúp về cơ sở dữ liệu thời gian thực firebase của mình. Chỉ cần thêm một khóa như "is_user_admin
" và đặt giá trị là true
từ chính bảng điều khiển. Bạn chỉ cần xác thực người dùng trước khi ai đó đang cố tạo tài khoản người dùng mới. Và sử dụng cách tiếp cận này, bạn có thể thiết lập quản trị viên của riêng bạn.
Hiện tại, tôi không nghĩ rằng có firebase-admin SDK
dành cho Android. Vì vậy, người ta có thể sử dụng phương pháp trên.
Xem http://stackoverflow.com/a/38013551/209103 –