2017-02-04 20 views
5

tôi muốn tạo một tài khoản người dùng mới từ ứng dụng của tôi khi đăng nhập như một "user admin", Vấn đề là tôi chỉ muốn tạo ra nó không thực sự đăng nhập.căn cứ hỏa lực tạo người dùng mà không cần đăng nhập

là nó có thể vô hiệu hóa đăng nhập tự động khi tạo người dùng mới bằng email/mật khẩu.

Tôi thấy những người khác đã đặt câu hỏi này liên quan đến JS và nhanh chóng nhưng dường như không thể tìm thấy bất kỳ thông tin liên quan đến Android cụ thể nào. Tôi đang cố gắng để đạt được điều tương tự như this person nhưng với android

bất kỳ sự giúp đỡ đánh giá cao

+0

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

Trả lời

3

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.

+0

tôi đánh giá cao bạn trả lời, nhưng điều này không giải quyết được vấn đề của tôi, điều này sẽ đăng xuất người dùng ra khỏi hệ thống và họ sẽ cần phải đăng nhập lại như một quản trị viên, tôi chỉ muốn đăng nhập với tư cách là người dùng quản trị và tạo AC mới, người dùng quản trị có thể đang tạo nhiều tài khoản để đăng xuất và đăng nhập lại sau mỗi lần không thực hiện – RoRo88

+0

@ RoRo88: Cập nhật câu trả lời của tôi sau khi thử nghiệm. Bây giờ điều này sẽ giải quyết vấn đề của bạn –

Các vấn đề liên quan