2017-11-30 161 views
5

dodałem Facebook login z Firebase uwierzytelniania w mojej aplikacji, ale uwierzytelniania logowania działa tylko z systemem Android API 24.Logowanie do serwisu Facebook działa tylko z interfejsu API 24 - nie znaleziono klasy deskryptora modułu lokalnego dla pliku com.google.firebase.auth. Błąd

Kiedy próbuję użyć niższy poziom API ekran zamarza i aplikacja przestaje działać.

Jest zbyt wysoka, większość użytkowników ma niższy API level.

Rzeczywiście zamierzam wydać wniosek o obniżenie poziomu interfejsu API.

Kod, którego używam, jest poniżej.

public class ConfigurationActivity extends Activity { 

    Button b_v_mm,b_som; 
    LoginButton loginButton; 
    CallbackManager callbackManager; 

    // [START declare_auth] 
    private FirebaseAuth mAuth; 
    // [END declare_auth] 


    private void handleFacebookAccessToken(AccessToken token) { 
     Log.d("FireBase", "handleFacebookAccessToken:" + token); 

     AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); 
     mAuth.signInWithCredential(credential) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         if (task.isSuccessful()) { 
          // Sign in success, update UI with the signed-in user's information 
          Log.d("FireBase", "signInWithCredential:success"); 
          FirebaseUser user = mAuth.getCurrentUser(); 
          //updateUI(user); 
         } else { 
          // If sign in fails, display a message to the user. 
          Log.w("FireBase", "signInWithCredential:failure", task.getException()); 
          //Toast.makeText(FacebookLoginActivity.this, "Authentication failed.", 
          //  Toast.LENGTH_SHORT).show(); 
          //updateUI(null); 
         } 

         // ... 
        } 
       }); 
    } 

    // [START on_start_check_user] 
    @Override 
    public void onStart() { 
     super.onStart(); 
     Log.d("FireBase", "onStart"); 
     // Check if user is signed in (non-null) and update UI accordingly. 
     FirebaseUser currentUser = mAuth.getCurrentUser(); 
     //updateUI(currentUser); 
    } 
    // [END on_start_check_user] 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.d("LoginFace", "LoginFace - onActivityResult"); 
     super.onActivityResult(requestCode, resultCode, data); 
     Log.d("LoginFace", "LoginFace - onActivityResult"); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
     Log.d("LoginFace", "LoginFace - After callbackManager"); 
/* 
     if (AccessToken.getCurrentAccessToken() != null) { 
      Log.d("AjudaFace", "AjudaFace - logout"); 
      LoginManager.getInstance().logOut(); 
     }*/ 
    } 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_configuration); 

     //Botãp da barra de ferramentas que faz retornar para o Menu principal. 
     b_v_mm = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_v_mm); 
     b_v_mm.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(ConfigurationActivity.this, MainMenu.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 

     b_som = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_som); 
     //Altera opções de som. 
     b_som.setOnClickListener(new View.OnClickListener() { 
             @Override 
             public void onClick(View v) { 

              //Carrega opções de texto do botão, armazenadas no repositório de strings 
              String s_som_on = getString(R.string.b_som_on); 
              String s_som_off = getString(R.string.b_som_off); 

              //Caso o som esteja desligado, o desliga. 
              if(b_som.getText().equals(s_som_on)) { 
               b_som.setText(s_som_off); 
              } 
              else //Caso o som esteja desligado, o liga. 
               if (b_som.getText().equals(s_som_off)){ 
                b_som.setText(s_som_on); 
               } 
             } 
            } 
     ); 

     callbackManager = CallbackManager.Factory.create(); 


// ... 
// Initialize Firebase Auth 
     mAuth = FirebaseAuth.getInstance(); 

     loginButton = (LoginButton) findViewById(R.id.login_button); 
     loginButton.setReadPermissions("email","public_profile"); 
     Log.d("LoginFace", "LoginFace - Button Created"); 


     // Callback registration 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       handleFacebookAccessToken(loginResult.getAccessToken()); 
       Log.d("LoginFace", "LoginFace - Sucesso"); 
       Toast.makeText(getApplicationContext(), 
         "LOGIN REALIZADO", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onCancel() { 
       Log.d("LoginFace", "LoginFace - Cancelado"); 
       Toast.makeText(getApplicationContext(), 
         "LOGIN CANCELADO", Toast.LENGTH_LONG).show(); 
      } 


      @Override 
      public void onError(FacebookException exception) { 
       Log.d("LoginFace", "LoginFace - Erro"); 
       Toast.makeText(getApplicationContext(), 
         "LOGIN Erro", Toast.LENGTH_LONG).show(); 
       Log.d("LoginFace", exception.toString()); 
      } 
     }); 


    } 
} 

przedmiotów używanych aktywności myApplication

import android.app.Application; 
import android.content.Context; 

** Wszystkie obiekty stosowane w projekcie są wymienione powyżej

API 23 log:

12-02 17:22 : 26.900 2668-2745 /? D/EGL_emulation: eglMakeCurrent: 0xaa9ba4e0: Wersja 2 0 (tinfo 0xac3853a0)

          [ 12-02 17:22:26.949 2668: 3361 D/   ] 
              HostConnection::get() New Host Connection established 0xa19c5800, tid 3361 


              [ 12-02 17:22:26.950 2668: 3361 W/   ] 
              Unrecognized GLES max version string in extensions: ANDROID_EMU_CHECKSUM_HELPER_v1 

ANDROID_EMU_dma_v1 02/12 17: 22: 26,977 2668-3361 /? D/EGL_emulation: eglCreateContext: 0xaa9ba900: maj 2 min 0 rcv 2 12-02 17: 22: 26.978 2668-3361 /? D/EGL_emulation: eglMakeCurrent: 0xaa9ba900: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf 12-02 17: 22: 26.980 2668-3361 /? E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824 12-02 17: 22: 27.135 2668-3361 /? D/EGL_emulacja: eglCreateContext: 0xaa9ba9c0: maj 2 min 0 rcv 2 12-02 17: 22: 27.136 2668-3361 /? D/EGL_emulation: eglMakeCurrent: 0xaa9ba9c0: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 29.740 2668-2668/com.cerveja.qof.pedro.qof_cerveja W/BindingManager: Can not call determinedVisibility() - never zobaczyłem połączenie dla pid: 2668 12-02 17: 22: 32.649 2668-2745/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba4e0: ver 2 0 (tinfo 0xac3853a0) 12-02 17: 22: 32.650 2668-2745/com.cerveja.qof.pedro.qof_cerveja E/Powierzchnia: getSlotFromBufferLocked: unknown buffer: 0xb40bdc00 12-02 17: 22: 32.676 2668-3361/com.cerveja.qof.pedro .qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba900: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 32.687 26 68-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba9c0: ver 2 0 (tinfo 0xa23bf7e0) 12-02 17: 22: 32.704 2668-2745/com.cerveja.qof.pedro .qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba4e0: wersja 2 0 (tinfo 0xac3853a0) 12-02 17: 22: 32,716 2668-2745/com.cerveja.qof.pedro.qof_cerveja E/eglCodecCommon: glUtilsParamSize: nieznane param 0x00008cdf 12-02 17: 22: 32.767 2668-3361/com.cerveja.qof.pedro.qof_cerveja D/EGL_emulation: eglMakeCurrent: 0xaa9ba900: Wersja 2 0 (tinfo 0xa23bf7e0) 02/12 17: 27: 05.115 2668-2711/com.cerveja.qof.pedro.qof_cerveja W/DynamiteModule: lokalny moduł klasy deskryptor com.google.firebase.auth nie znaleziono.

Ten ostatni z nich jest prawdopodobnie przyczyną błędu:

12-02 17: 27: 05,115 2668-2711/com.cerveja.qof.pedro.qof_cerveja W/DynamiteModule: Lokalny moduł klasy deskryptor com .google.firebase.auth nie znaleziono.

Co mogę zrobić, aby obniżyć wymagany poziom interfejsu API?

+0

Mój poziom API 15 i działający jak wdzięk – androidXP

+0

Może to być problem z twoimi zależnościami budowania lub wersją usług Google Play na twoim urządzeniu. Wyjaśnij więcej na temat awarii urządzeń z interfejsem API poniżej 23. –

+0

Jak mogę to sprawdzić? Aplikacja po prostu zawiesza się, nie wskazuje żadnego błędu na logcat. – Siqueira

Odpowiedz

1

Spróbuj ponownie zsynchronizować klienta z aplikacją Firebase i dodaj ponownie plik .json.

W Androidzie 2.3 po prostu kliknij na narzędzia> firebase iw asystencie sprawdź, czy twoja aplikacja jest podłączona.

Upewnij się także, że nazwa pakietu jest poprawna zarówno na koncie programistów Facebooka, jak i na konsoli firebase.

Use the latest Firebase library

można sprawdzić wersję Google Play Services?

Urządzenie Android powinien mieć Google Play 9.0.0 lub nowszy

Jedną z przyczyn tego problemu może być Twoje konto w metodzie wewnątrz Firebase> Auth Dashboard może być wyłączona