SDK de Android Facebook: el hash de clave no coincide con ningún hash de clave almacenado al cargar Google Play
Mi aplicación utiliza la API de Facebook para el inicio de sesión de usuario. En el desarrollo funciona bien, pero cuando lo cargué a google play deja de funcionar.
Este es el registro de errores:
- "Error de cookies no habilitado" en algunos dispositivos
- La devolución de llamada de inicio de sesión no se activa mediante facebook-android-sdk 4
- El botón de inicio de sesión de Facebook no está ejecutando la devolución de llamada al hacer clic
- LoginButton pidiendo permiso de lista de amigos, ¿por qué?
- Error de SSL durante el inicio de sesión de Facebook en Android
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): Exception during service 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): com.facebook.http.protocol.ApiException: Key hash XXXXXXX does not match any stored key hashes. 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:162) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponse.g(ApiResponse.java:239) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:272) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:29) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.java:56) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.java:29) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:280) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:141) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.java:103) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:196) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:374) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:151) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:18) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:367) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:260) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.java:299) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:53) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:230) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:59) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.Handler.handleCallback(Handler.java:733) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.Handler.dispatchMessage(Handler.java:95) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.Looper.loop(Looper.java:137) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.HandlerThread.run(HandlerThread.java:61) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): Failed to send 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:640) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:48) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation$2.run(BlueServiceOperation.java:605) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.os.Handler.handleCallback(Handler.java:733) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.os.Handler.dispatchMessage(Handler.java:95) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.os.Looper.loop(Looper.java:137) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.app.ActivityThread.main(ActivityThread.java:4998) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at java.lang.reflect.Method.invokeNative(Native Method) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at java.lang.reflect.Method.invoke(Method.java:515) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at dalvik.system.NativeStart.main(Native Method)
¿Podría ser que el hash clave ha cambiado de alguna manera?
- Cómo cambiar el idioma de com.facebook.widget.LoginButton en Android
- Facebook Login / Google Login - ¿La misma actividad?
- Cómo obtengo, es el inicio de sesión de usuario o cerrar sesión en facebook sdk 4.0.1
- Prácticas recomendadas (lo mejor para Android): autenticar a un usuario con acceso a Facebook o Google
- Error en la entrada de Facebook de Android
- Autenticación con Facebook al principio y luego Google provoca un error en Firebase para Android
- Facebook onCompleted Email java.lang.NullPointerException
- Facebook SDK 4.0 LoginButton - setReadPermissions no funciona?
¿Ha seguido los pasos que facebook proporciona para la creación de una aplicación de inicio de sesión?
Necesitas un keyhash de producción obtenido a partir de tu keystore de liberación:
De la línea de comand:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Y agrega esta clave en las opciones de la página de la aplicación de Facebook.
Más información: Documentos de Facebook
Pasé un día entero tratando de averiguar por qué esto no funcionaba …
Al generar la clave hash para la producción, debe usar openssl-0.9.8e_X64.zip en Windows, no puede usar openssl-0.9.8k_X64.zip
Las versiones producen diferentes claves hash, por alguna razón 9.8k no funciona correctamente … 9.8e hace
Referencia
Esto me estaba dando la llave equivocada.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Una solución que funcionó para mí fue: 1. Ponga este código en su actividad de lanzamiento
private void printKeyHash(){ // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "YOUR_PACKAGE_NAME", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { Log.d("KeyHash:", e.toString()); } catch (NoSuchAlgorithmException e) { Log.d("KeyHash:", e.toString()); } }
- Exporte la aplicación para publicar en la tienda de juegos utilizando la .keyStore
- Instale la aplicación antes de cargar para reproducir la tienda y ejecútela y observe el keyHash impreso.
- Agrega el keyHash a la aplicación de Facebook.
Espero que esto ayude a alguien.
También puede tomar el hash que falta del rastreo de pila de la ApiException: Key hash XXXXXXX does not match any stored key hashes
. Ahí lo tienes ya, solo falta el =
al final. Así que toma XXXXXXX =.
Esto está funcionando bien para mí
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Donde
<RELEASE_KEY_ALIAS>
es su nombre de alias mientras crea la aplicación firmada.
Y
<RELEASE_KEY_PATH>
es la ubicación en la imagen de abajo Y, a continuación, introduzca la contraseña es clave crear contraseña en la imagen de abajo en lugar de android
Las soluciones anteriores son correctas hasta cierto punto. Pero si alguien todavía se enfrenta a un problema. Elimine la clave del perfil del desarrollador y agréguela de nuevo escribiendo = al final y pulse enter. Usted tiene que agregar la llave en ajustes y revelador.
Tenía problemas con el lanzamiento de aplicaciones en google play y el uso de la tecla de liberación
Verifique el punto no. 9 en Activar inicio de sesión único para su aplicación
Activar inicio de sesión único Active la conexión única para su aplicación configurando Single Sign On en Sí a continuación. SíNo Inicio de sesión único