2016-05-22 20 views
13

Tôi đã xem tài liệu Firebase để thiết lập hệ thống xác thực người dùng trong ứng dụng Android của mình. Tuy nhiên, đối với một số lý do, nó không giống như bất kỳ callbacks đang chạy trên đối tượng FirebaseAuth của tôi!Đối tượng Auth Android Firebase không có cuộc gọi lại bắn

Ví dụ với việc thiết lập xác thực Facebook theo hướng dẫn here

private void handleFacebookAccessToken(AccessToken token) { 
    Log.d("AUTH", "handleFacebookAccessToken:" + token.getToken()); 
    // ... 
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); 
    Log.d("AUTH", "Credential: "+credential); 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        Log.d("AUTH", "signInWithCredential:onComplete:" + task.isSuccessful()); 

        // If sign in fails, display a message to the user. If sign in succeeds 
        // the auth state listener will be notified and logic to handle the 
        // signed in user can be handled in the listener. 
        if (!task.isSuccessful()) { 
         Log.w("AUTH", "signInWithCredential", task.getException()); 
         Toast.makeText(LoginActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 
        } 

        // ... 
       } 
      }); 
} 

Tất cả mọi thứ tốt đẹp trên một phần của Facebook nhưng khi nói đến việc đăng nhập bằng các chứng chỉ fb lấy ra, chức năng signInWithCredential không chạy bất kỳ callbacks và không có gì dường như xảy ra trong cơ sở dữ liệu người dùng của tôi.

Bên cạnh đó tôi đã cố gắng nhiều hơn nữa sự đơn giản

mAuth.createUserWithEmailAndPassword(etUserID.getText().toString(), etPassword.getText().toString()); 

và không có gì xảy ra là tốt. Tôi đã bật cả hai nhà cung cấp trong bảng điều khiển Firebase của mình và tải xuống tệp google-services.json mới nhất cho dự án. Tui bỏ lỡ điều gì vậy?

CHỈNH SỬA: Chỉ cần thử chạy demo xác thực bắt đầu nhanh và nó không hoạt động. Tôi thấy trên giả lập của tôi rằng ứng dụng này sẽ không chạy trừ khi tôi cập nhật các dịch vụ của google. Đây có phải là nguyên nhân của lỗi này không? Tôi đã thử cập nhật các dịch vụ của google trên nhiều trình mô phỏng khác nhau và chỉ trả về lỗi.

+0

Tôi tin rằng vấn đề có cái gì để làm với các callback không hoàn thành kể từ khi không ai trong số các callbacks cháy ... tương tự như vấn đề này: http://stackoverflow.com/questions/29975024/firebase- java-android-createuser-failing – tetutato

+0

Tôi thấy giống nhau. Đã thử tùy chỉnh và xác thực ẩn danh, cả hai đều không hoạt động. Cuộc gọi lại không được gọi. – biasedbit

Trả lời

3

Có vẻ như vấn đề là do một số trình mô phỏng nhất định không hỗ trợ các phiên bản Dịch vụ của Google Play mới nhất! (Bạn sẽ thấy một lỗi trong logcat) Galaxy Nexus 5 x API 23 w/Google API dường như làm việc với thông tin đăng nhập.

+0

bạn có thể tìm ra cái này không? Tôi đang chạy Nexus 5 và đó là task.isSuccessful() luôn luôn là sai. Không có vấn đề gì tôi làm, không chắc chắn phải làm gì vào thời điểm này? –

+0

Bạn phải làm điều gì đó sai trái khi nhận được thông tin đăng nhập. Tôi đã gặp vấn đề ngay cả khi onComplete được kích hoạt, nhưng tôi đoán nó đang làm việc cho bạn và bạn đang kiểm tra giá trị task.isSuccessful() ở đó. – tetutato

5

Chỉ hoạt động trên thiết bị Android thực sự nhưng không may mắn với trình mô phỏng.

Đối với các thiết bị, bạn sẽ cần phải thêm phụ thuộc sau đây trong tập tin gradle ứng dụng của bạn:

compile 'com.google.android.gms:play-services-auth:9.0.2' 

tôi đã không kiểm tra, nhưng có vẻ như nếu bạn cập nhật hình ảnh giả lập với google mới hơn dịch vụ chơi, nó cũng sẽ hoạt động.

Hy vọng điều đó sẽ hữu ích.

0

tôi đã cùng một vấn đề và cuối cùng trong trường hợp của tôi, tôi quên kích hoạt nó trong giao diện điều khiển căn cứ hỏa lực

enter image description here

0

Trên một thiết bị vật lý, tôi đã cần phải cập nhật Google Play Services để có được gọi lại để làm việc

0

Tôi đã gặp vấn đề tương tự ở đây và giải pháp rất đơn giản: ngừng sử dụng trình mô phỏng và bắt đầu sử dụng thiết bị vật lý để kiểm tra ứng dụng. Tôi không biết tại sao, nhưng có vẻ như trình giả lập có một số vấn đề liên quan đến firebase:/

2

Giải quyết nó nhờ bài đăng @feroult và các tài nguyên khác. Trong trường hợp của tôi OnCompleteListener chưa bao giờ được gọi sau khi tôi cập nhật build.gradle với phiên bản mới của Thư viện Dịch vụ Play và thư viện Firebase. Giải pháp là cập nhật Ứng dụng dịch vụ của Play được cài đặt trên Trình giả lập.

Trong trường hợp của tôi nó bắt đầu làm việc với 11.0.4 phiên bản của thư viện dịch vụ Play và 11.3.02 phiên bản của ứng dụng Dịch vụ Play cài đặt trên Emulator.

enter image description here enter image description here

+0

Ảnh chụp màn hình rất hữu ích! Cập nhật dịch vụ google play cũng đã giải quyết nó cho tôi. – GDanger

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