2016-05-22 15 views
13

Ho esaminato i documenti di Firebase per configurare un sistema di autenticazione utente nella mia app Android. Per qualche ragione, tuttavia, non sembra che nessuno dei callback sia in esecuzione sul mio oggetto FirebaseAuth!Oggetto autenticazione Android Firebase senza richiamate che attivano

Per esempio con la creazione di autenticazione di Facebook come indicato 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(); 
        } 

        // ... 
       } 
      }); 
} 

Tutto bene da parte di Facebook, ma quando si tratta di accesso con le credenziali fb recuperati, la funzione signInWithCredential non viene eseguito alcun callback e niente sembra accadere nel mio database utente.

Inoltre ho provato il molto più semplice

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

e non succede nulla pure. Ho abilitato entrambi i provider nella mia console Firebase e ho scaricato l'ultimo file google-services.json per il progetto. Mi sto perdendo qualcosa?

EDIT: Ho appena provato a eseguire la demo di autenticazione di avvio rapido e non funziona altrettanto bene. Vedo sul mio emulatore che questa app non verrà eseguita a meno che non aggiorni i servizi Google. È questa la causa di questo errore? Ho provato ad aggiornare i servizi di google su vari emulatori e questo restituisce solo un errore.

+0

Credo problema abbia a che fare con la richiamata non finire dal momento che nessuno del fuoco callback ... simili a questo problema: http://stackoverflow.com/questions/29975024/firebase- java-android-createuser-failing – tetutato

+0

Sto vedendo lo stesso. Provato dall'autore personalizzato e anonimo, nessuno dei due funziona. I callback non vengono semplicemente chiamati. – biasedbit

risposta

3

Sembra che il problema sia causato da alcuni emulatori che non supportano le ultime versioni di Google Play Services! (Verrà visualizzato un errore in logcat) Galaxy Nexus 5x API 23 w/Le API di Google sembrano funzionare con gli accessi.

+0

sei riuscito a capirlo? Sto eseguendo Nexus 5 ed è task.isSuccessful() è sempre falso. Non importa cosa faccio, non sono sicuro di cosa fare a questo punto? –

+0

Devi fare qualcosa di sbagliato con ottenere le credenziali. Stavo avendo problemi anche a far funzionare il onComplete, ma immagino che funzioni per te e tu stia verificando il valore task.isSuccessful(). – tetutato

5

Ha funzionato solo su un vero dispositivo Android, ma non ha avuto fortuna con l'emulatore.

per il dispositivo, è necessario aggiungere la seguente dipendenza nel file Gradle app:

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

non ho ancora testato, ma sembra che se si aggiorna l'immagine emulatore con una più recente di Google giocare a servizi, dovrebbe anche funzionare.

Spero che aiuti.

0

ho avuto lo stesso problema e, infine, nel mio caso ho dimenticato abilitarlo in consolle Firebase

enter image description here

0

su un dispositivo fisico, ho avuto bisogno di aggiornare Google Play Services al fine di ottenere la richiamata a lavoro

0

Ho avuto lo stesso problema qui, e la soluzione era molto semplice: smettere di usare l'emulatore e iniziare a utilizzare un dispositivo fisico per testare l'applicazione. Non so perché, ma sembra che l'emulatore abbia qualche problema con il firebase:/

2

Risolto il problema grazie al post @feroult e ad altre risorse. Nel mio caso OnCompleteListener non è mai stato chiamato dopo aver aggiornato il build.gradle con la nuova versione delle librerie Play Services e Firebase. La soluzione è aggiornare l'app Play Services installata sull'emulatore.

Nel mio caso è iniziato a lavorare con 11.0.4 versione della libreria di Play Services e versione di Play Services app installata sul emulatore 11.3.02.

enter image description here enter image description here

+0

Gli screenshot sono stati molto utili! L'aggiornamento di Google Play Services lo ha risolto anche per me. – GDanger

Problemi correlati