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:

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?

¿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()); } } 
  1. Exporte la aplicación para publicar en la tienda de juegos utilizando la .keyStore
  2. Instale la aplicación antes de cargar para reproducir la tienda y ejecútela y observe el keyHash impreso.
  3. 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.

Introduzca aquí la descripción de la imagen

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

Introduzca aquí la descripción de la imagen

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

  • El estado de Facebook no se actualizó. Error 403, error de autenticación, SocialAuthException en Android
  • ¿Cómo detectar un evento de cierre de sesión con la API de Android de Facebook v4?
  • El inicio de sesión de API de Facebook falla con la aplicación FB instalada en el teléfono
  • El inicio de sesión de Facebook falla en algunos dispositivos
  • Inicio de sesión de Android Facebook SDK 4.0 con LoginManager
  • Inicio de sesión de Facebook en el fragmento en android
  • Cómo cambiar la altura del botón 'Iniciar sesión con Facebook'?
  • Facebook SDK 4.0.1 Iniciar sesión sin iniciar sesión
  • Login de Android Facebook "LoginActivity could not be started"
  • Cómo obtengo, es el inicio de sesión de usuario o cerrar sesión en facebook sdk 4.0.1
  • Facebook onCompleted Email java.lang.NullPointerException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.