firestore - Google inicia sesión en Android con Firebase-statusCode DEVELOPER_ERROR
firebaseui ios (11)
Intento implementar el inicio de sesión de Google en mi aplicación Firebase para Android. Cuando ejecuto la aplicación y presiono el botón Iniciar sesión en Google, no sucede nada. Y recibo este error en onActivityResult: Status {statusCode = DEVELOPER_ERROR, resolution = null} .
Mi código se ve así:
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;
}
He agregado el archivo de configuración JSON en la aplicación / directorio y he agregado dependencias:
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:0.8.3.0@aar'') {
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''
Ya estoy buscando horas de solución ... ¡Por favor ayuda!
Al crear la clave OAuth, debe asegurarse de que está dando el nombre correcto del paquete. Esto significa el nombre del paquete que viene en su archivo de manifiesto.
Si está utilizando varios módulos (por ejemplo, alguna biblioteca como FirebaseUI-Android), asegúrese de que al crear la clave, use el nombre del paquete desde el que solicita la autenticación de Google.
Creé la nueva clave SHA1 de depuración siguiendo los siguientes pasos y reemplazé la clave SHA1 en la configuración de mi proyecto. funciono para mi
-Abra su proyecto.
- Haga clic en el menú Archivo -> Nuevo -> Haga clic en Google -> Seleccione la actividad de Google Maps -> Haga clic en Finalizar. -Android studio generaría el archivo google_maps_api.xml automático.
-Puede obtener la clave SHA1 de depuración en este archivo.
Reemplace esta clave SHA1 en la configuración del proyecto, luego descargue el nuevo google-services.json
de la configuración y reemplácelo en su proyecto, ya que cambiará el Certificate_hash y el client_id.
Creo que necesitas cambiar tu versión de play-service.
Consulte Firebase Android Codelab para agregar la dependencia de Firebase Auth a su aplicación / build.gradle.
Intente actualizar su servicio de juego en Gradle como se muestra a continuación:
/* For Google Play Services */
...
compile ''com.google.android.gms:play-services:9.0.0''
...
La aplicación está mal configurada. Este error no es recuperable y será tratado como fatal. El desarrollador debe mirar los registros después de esto para determinar información más útil.
Haga clic Here (línea de guía para desarrolladores de Google) y cree un nuevo proyecto para la consola Firebase. Este enlace está configurado con la configuración predeterminada, por lo que no necesita agregarlo manualmente.
Si la firma de la aplicación Google Play está habilitada para su aplicación, entonces reemplazará su clave de firma de lanzamiento con la que está en el servidor de Google antes de publicar. Puede verificar si está habilitado desde la Google Play Console -> Release Management -> App Signing
.
En mi caso, tuve que copiar el SHA1 de la sección ''Certificado de firma de la aplicación'' y agregarlo a la sección de configuración general de los proyectos de Firebase, volver a generar el archivo json, agregarlo al proyecto y volver a cargar la apk, y el error se resolvió.
Tenía el mismo problema. Pero funcionó bien después de que limpié y reconstruí el proyecto. :RE
Tuve el mismo problema y lo puse en funcionamiento al hacer estos pasos:
1. Agregue la huella digital DEBUG_KEYSTORE SHA1 al proyecto de base de fuego. usar el siguiente comando (MAC / LINUX)
keytool -exportcert -list -v /-alias androiddebugkey -keystore ~/.android/debug.keystore
2. Ahora genere un apk firmado de su proyecto. El proceso incluye la generación de un almacén de claves para la versión de lanzamiento de su aplicación. Copie la ruta del archivo .jks recién generado.
3. Ahora genere la huella digital RELEASE_KEYSTORE SHA1 usando el siguiente comando
keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME
4. Copie el nuevo SHA1 de la salida y agréguelo como otra huella digital SHA1 en la consola de la aplicación de base de fuego.
Ahora eres bueno para ir! ---- ¡Esperanza! ayuda.
Tuve el mismo problema. Después de 2 días de dolor, observé que mi lanzamiento SHA1 era incorrecto (solía usarlo usando la herramienta keytool en java / bin y me daba un mal SHA1. Probablemente porque ahora Android Studio usa su propio paquete java y no el JDK) . Mejor manera de obtener el corect SHA1 aquí Huella digital SHA-1 del certificado del almacén de claves
Yo tuve el mismo problema. Lo que pasa es que tienes una depuración SHA1 y una versión SHA1. Normalmente solo usamos SHA1 Debug y generamos el .apk firmado para google play, pero cuando usamos google sigin, debe ingresar la versión cortafuegos de SHA1.
Para ver el lanzamiento de SHA1 use el siguiente comando:
keytool -list -v -keystore C:/ProjectsData/keystore/my-release-key.keystore -alias alias_name
Luego ingrese este SHA1 en Firebase
https://support.google.com/firebase/answer/7000104
Esta respuesta SHA1:
Huella digital SHA-1 del certificado del almacén de claves
Espero haberte ayudado.
DEVELOPER_ERROR
significa que los servicios de Google Play no pudieron encontrar un cliente coincidente desde la consola según su SHA1 y el nombre del paquete. Puede agregar SHA1 en la página de configuración en la consola de Firebase para un nombre de paquete determinado, o agregar un nuevo nombre de paquete a través del botón Agregar Firebase a su aplicación de Android .
En general, algunas cosas para verificar:
- Asegúrese de que el nombre de su paquete sea el que espera, por ejemplo, es el de su build.gradle y que no se anule en una variante de compilación o en una versión de producto.
- Asegúrese de haber registrado sus claves de depuración y SHA1 en la consola.
El código de error 10 es un valor constante de CommonStatusCodes.DEVELOPER_ERROR
que implica que ha configurado mal su proyecto
Lo que puedes hacer
compruebe si SHA de PlayStore Console y Firebase Console son iguales.
Copia SHA desde la consola de Google Play
pégalo en la Consola Firebase
¿Qué más puedes hacer?
Mostrar mensajes significativos en caso de fallo en inglés simple
// 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();