14

Provo ad implementare l'accesso Google nella mia app Android connessa Firebase. Quando eseguo l'app e preme il pulsante Accedi Google, non succede nulla. E ho ricevuto questo errore in onActivityResult: Stato {statusCode = DEVELOPER_ERROR, risoluzione = null}.Accesso a Google Android con Firebase - statusCode DEVELOPER_ERROR

Il mio codice è simile al seguente:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 

     if (result.isSuccess()){ 
      GoogleSignInAccount account = result.getSignInAccount(); 
      String emailAddres = account.getEmail(); 
      getGoogleQAuthToken(emailAddres); 
     } 
    } 
} 

     private void getGoogleQAuthToken(final String emailAddres){ 
      AsyncTask<Void,Void,String> task = new AsyncTask<Void, Void, String>() { 
       String errorMessage = null; 

       @Override 
       protected String doInBackground(Void... params) { 
        String token = null; 
        try { 
         String scope = "oauth2:profile email"; 
         token = GoogleAuthUtil.getToken(MainActivity.this, emailAddres, scope); 
        } catch (IOException transientEx) { 

         errorMessage = "Network error: " + transientEx.getMessage(); 
        } catch (UserRecoverableAuthException e) { 
         Intent recover = e.getIntent(); 
         startActivityForResult(recover, MainActivity.REQUEST_CODE_GOOGLE_LOGIN); 
        } catch (GoogleAuthException authEx) { 
         errorMessage = "Error authenticating with Google: " + authEx.getMessage(); 
        } 
        return token; 
       } 

ho aggiunto file di configurazione JSON in app/e ha aggiunto le dipendenze:

 buildscript { 
repositories { 
    jcenter() 
} 

dependencies { 
    classpath 'com.google.gms:google-services:1.5.0-beta2' 
} 
    } 


    dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:23.1.+' 
compile 'com.firebase:firebase-client-android:2.3.0+' 

/* For Google Play Services */ 
compile 'com.google.android.gms:play-services-safetynet:8.3.0' 
compile 'com.google.android.gms:play-services-auth:8.3.0' 
compile 'com.google.android.gms:play-services:8.3.0' 

compile('com.afollestad.material-dialogs:core:[email protected]') { 
    transitive = true 
} 

/* Firebase UI */ 
compile 'com.firebaseui:firebase-ui:0.2.2' 

compile 'com.android.support:cardview-v7:23.1.+' 
compile 'com.android.support:recyclerview-v7:23.1.+' 
compile 'com.android.support:design:23.1.+' 


    } 
    apply plugin: 'com.google.gms.google-services' 

Cerco ore soluzione già ... Per favore aiuto!!

risposta

15

DEVELOPER_ERROR significa che Google Play Services non è riuscito a trovare un client corrispondente dalla console in base al nome SHA1 e al nome del pacchetto. È possibile aggiungere SHA1s nella pagina delle impostazioni su Firebase console per un determinato nome pacchetto o aggiungere un nuovo nome pacchetto tramite Aggiungi Firebase all'app Android.

In generale, alcune cose da controllare:

  • Assicurarsi che il nome del pacchetto è quello che ci si aspetta - per esempio è quello nel tuo build.gradle, e non viene sovrascritto in una variante di build o in un prodotto.
  • Assicurarsi di aver registrato il debug e rilasciare le chiavi SHA1 nella console.
+1

il mio nome del pacchetto e SHA1 sono registrati sulla console, avevo importato un Google App esistente e ho incluso anche il file JSON nella cartella app. Ancora sono bloccato con lo stesso errore. – SKen

+2

Un paio di cose da verificare: verifica che siano registrati come ID cliente/collega l'app e non come chiave API. Inoltre, prova ad ispezionare il tuo APK con aapt per assicurarti che utilizzi davvero lo SHA1 e il nome del pacchetto che intendi: a volte può essere un altro keystore del previsto, oppure una regola gradle sta modificando il nome del pacchetto. –

+0

Capisco che la tua risposta è la ragione più probabile, specialmente dal momento che la mia versione build con un keystore diverso ha funzionato perfettamente. Ma, il mio debug ey è stato lo stesso e non c'è alcun cambiamento né nella mia chiave SHA1 né nel mio nome del pacchetto. Non riesco ancora a farlo funzionare su build di debug. – SKen

0

Aveva lo stesso problema. Ma ha funzionato bene dopo aver pulito e ricostruito il progetto. : D

0

Penso che sia necessario modificare la versione del servizio di gioco.

Vedere Firebase Android Codelab per aggiungere Dipendenza Auth Firebase al file app/build.gradle.

tenta di aggiornare il vostro gioco-service in Gradle come di seguito:

/* For Google Play Services */ 
... 
compile 'com.google.android.gms:play-services:9.0.0' 
... 

DEVELOPER_ERROR:

L'applicazione è configurato correttamente. Questo errore non è recuperabile e sarà considerato fatale. Lo sviluppatore dovrebbe esaminare i registri dopo questo per determinare più informazioni utilizzabili.

1

Ho creato una nuova chiave SHA1 per il debug utilizzando i passaggi seguenti e sostituito il tasto SHA1 nelle impostazioni del mio progetto. ha funzionato per me
-Apri il tuo progetto.
-Fai clic sul menu File -> Nuovo -> Fai clic su Google -> Seleziona Attività su Google Maps -> Fai clic su Fine. -Android studio genererebbe automaticamente il file google_maps_api.xml.
-È possibile ottenere il debug SHA1 chiave in questo file.

Sostituire questo tasto SHA1 nelle impostazioni del progetto, quindi scaricare il nuovo google-services.json dalle impostazioni e sostituirlo nel progetto come certificate_hash e client_id cambierà.

0

Durante la creazione della chiave OAuth, è necessario assicurarsi di fornire il nome corretto del pacchetto. Questo significa il nome del pacchetto che compare nel file manifest.

Se si utilizzano più moduli (ad esempio alcune librerie come FirebaseUI-Android), assicurarsi che durante la creazione della chiave venga utilizzato il nome del pacchetto da cui si richiede l'autenticazione di Google.

5

Ho avuto lo stesso problema. Quello che succede è che hai un debug SHA1 e rilascia SHA1. Normalmente abbiamo usato solo il debug SHA1 e generato il .apk firmato per google play, ma quando usiamo google sigin devi inserire la versione firebase di SHA1.

Per visualizzare lo SHA1 rilascio utilizzare il seguente comando:

keytool -list -v -keystore C:\ProjectsData\keystore\my-release-key.keystore -alias alias_name 

Poi entrare in questo SHA1 sulla Firebase

https://support.google.com/firebase/answer/7000104

Questa risposta SHA1:

SHA-1 fingerprint of keystore certificate

Spero di esserlo ti ho lasciato.

+0

ho avuto lo stesso errore, dopo aver aggiunto sia il problema di rilascio sia il debug SHA1 i problemi sono stati risolti –

+0

@jemomgebrishvili Non funziona per me –

+0

Sei un salvatore inviato giù dal cielo. Grazie mille @ Ismael –

1

Ho avuto lo stesso problema e ho ottenuto che funziona effettuando questi passaggi:

1. Aggiungere DEBUG_KEYSTORE SHA1 di impronte digitali per il progetto Firebase. utilizzare il seguente comando (MAC/LINUX)

keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.android/debug.keystore 

2. Ora generare un apk firmato del vostro progetto. Il processo include la generazione di un keystore per la versione di rilascio dell'app. Copia il percorso del file .jks appena generato.

3. Ora generare RELEASE_KEYSTORE SHA1 impronte digitali utilizzando il seguente comando

keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME 

4. Copiare il nuovo SHA1 dall'uscita e aggiungerlo come un'altra impronta digitale SHA1 nella vostra console applicazione Firebase.

Ora sei pronto per partire! ---- Speranza! aiuta.

0

Ho avuto lo stesso problema. Dopo 2 giorni di dolore, ho notato che il mio rilascio SHA1 era incorporeo (lo usavo usando il keytool in java/bin e mi dava un brutto SHA1. Probabilmente perché ora Android Studio usa il suo java e non il JDK) . Modo migliore per ottenere lo SHA1 corect qui SHA-1 fingerprint of keystore certificate

0

Clicca Here (Google Developer linea Gide) e creare nuovo progetto per console Firebase questo link è impostato impostazione predefinita, in modo da non necessario aggiungerlo manuale

9

Se Google Play App Signing è abilitato per la tua app, allora sostituirà la tua chiave di firma di rilascio con quella sul server di googles prima della pubblicazione. È possibile verificare se è abilitato da Google Play Console -> Release Management -> App Signing.

Nel mio caso, ho dovuto copiare lo SHA1 dalla sezione "Certificato di firma app" e aggiungerlo alla sezione delle impostazioni generali dei progetti Firebase, rigenerare il file json, aggiungerlo al progetto e caricare nuovamente l'apk, e errore è stato risolto.

+0

Questo è stato il mio caso al 100%. La mia altra app non ha "App Signing" attivata tramite Google Play Console. Ma per qualche ragione, il mio nuovo ha - che cambia SHA1 quando viene caricato/rilasciato tramite Google Play. – Oakleaf

+0

Sei fantastico !!! –

+0

L'unica soluzione che ha funzionato per me. –

1

Codice di errore 10 è il valore costante di CommonStatusCodes.DEVELOPER_ERROR che implica che hai configurato male il progetto

cosa si può fare

  • controllo se SHA dal PlayStore Console e Console Firebase sono gli stessi.

    Copia SHA da Google Play console

    enter image description here

incollarlo in Firebase Console

enter image description here

Che altro si può fare?

Mostra messaggi significativi in ​​caso inglese piana di fallimento

  // Google Sign In failed, update UI appropriately 
      Log.w(TAG, "Google sign in failed", e); 

      String messageToDisplay = "Authentication failed."; 
      switch (e.getStatusCode()) { 
       case CommonStatusCodes.API_NOT_CONNECTED: //17 
        messageToDisplay += "The client attempted to call a method from an API that failed to connect."; 
        break; 

       case CommonStatusCodes.DEVELOPER_ERROR: //10 
        messageToDisplay += "The application is misconfigured."; 
        break; 

       case CommonStatusCodes.ERROR: //13 
        messageToDisplay += "The operation failed with no more detailed information."; 
        break; 

       case CommonStatusCodes.INTERNAL_ERROR: //8 
        messageToDisplay += "An internal error occurred."; 
        break; 

       case CommonStatusCodes.INVALID_ACCOUNT: //8 
        messageToDisplay += "Invalid account name specified."; 
        break; 

       case CommonStatusCodes.SIGN_IN_REQUIRED: //8 
        messageToDisplay += "Please Sign In to continue."; 
        break; 
      } 

      Toast.makeText(LoginActivity.this, messageToDisplay, 
        Toast.LENGTH_SHORT).show(); 
Problemi correlati