android facebook firebase firebase-authentication facebook-authentication

android - ¿Por qué el SDK de autenticación de Facebook se comporta de manera tan diferente según su modo?



firebase firebase-authentication (5)

Aquí está la explicación de este problema:

07-05 15: 36: 28.946 29406 4941 W fb4a.BlueServiceQueue: Excepción durante el servicio 07-05 15: 36: 28.946 29406 4941 W fb4a.BlueServiceQueue: X.2LH: [código] 404 [mensaje]: Key hash GtvUdcOKFRAE0RY0LIw5veCA + M8 = no coincide con ningún hash de clave almacenado. (404) [extra]: nulo

Recuerde que el Key Hash que configura en su aplicación de Facebook está relacionado con el Keystore (certificado) con el que está firmada su aplicación.

Debe usar Key hash con el que firma su solicitud, si no lo sabe, le sugiero que lo obtenga de nuevo desde su almacén de claves:

https://developers.facebook.com/docs/android/getting-started/

¿Por qué el SDK de inicio de sesión de Facebook se comporta de manera tan diferente en estos modos? Pensé en ellos como una preferencia inocua que no tuvo ningún impacto en la autenticación en sí misma, pero Dios estaba equivocado.

En la web no tiene problemas, pero si está dentro de una aplicación necesita autorizar el uso de la aplicación, y muy importante para esta implementación en una aplicación de Android, necesita usar el SDK de Facebook , y en este caso necesita para obtener el certificado de clave hash con el que se firma su solicitud.

Tengo una aplicación de Android en la App Store. Utiliza Firebase en el back-end y proporciona inicio de sesión social a través de Facebook (y Google).

Recientemente, Facebook me contactó para advertirme que mi aplicación se bloquea / no responde al iniciar sesión a través de Facebook. Confundido, me embarqué en algunas pruebas.

Lo que encontré es que si uso el inicio de sesión de Facebook sin la aplicación de Facebook instalada, todo funciona perfectamente. Al usuario se le muestra una ventana del navegador, puede iniciar sesión, y se le redirige a mi aplicación y tengo su identidad. Por supuesto, encontré todo esto durante el desarrollo, pero solo quería confirmar que las cosas seguían funcionando.

Pero cuando instalo la aplicación de Facebook (algo que no hice durante el desarrollo), descubrí que ya no funciona. En cambio, el usuario es redirigido a esta página:

Para búsqueda y accesibilidad, el texto en esta imagen dice:

Error de inicio de sesión: hay un error al iniciar sesión en esta aplicación. Por favor, inténtelo de nuevo más tarde.

Revisé los registros cuando esto ocurre y encontré lo siguiente que puede ser relevante, pero no estoy realmente seguro:

07-05 15:36:28.468 908 5828 I ActivityManager: START u0 {act=NATIVE_WITH_FALLBACK cmp=<<redacted>>/com.facebook.FacebookActivity (has extras)} from uid 10264 07-05 15:36:28.469 665 665 D QCOM PowerHAL: LAUNCH HINT: ON 07-05 15:36:28.470 665 665 D QCOM PowerHAL: Activity launch hint handled 07-05 15:36:28.495 4837 4837 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@e64bd3e 07-05 15:36:28.689 665 665 D QCOM PowerHAL: LAUNCH HINT: OFF 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: Exception during service 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: X.2LH: [code] 404 [message]: Key hash GtvUdcOKFRAE0RY0LIw5veCA+M8= does not match any stored key hashes. (404) [extra]: null 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1eL.C(:93) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.2sO.C(:26) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.CvC.umA(:38) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.2yi.handleResponse(:224) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1dO.run(:71) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.0r0.run(:2) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1qG.run(:2) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.12V.run(:3) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at X.1xB.run(:12) 07-05 15:36:28.946 29406 4941 W fb4a.BlueServiceQueue: at java.lang.Thread.run(Thread.java:764) 07-05 15:36:28.981 908 8581 I ActivityManager: START u0 {cmp=com.facebook.katana/.ProxyAuth (has extras)} from uid 10264 07-05 15:36:28.982 665 665 D QCOM PowerHAL: LAUNCH HINT: ON 07-05 15:36:28.983 665 665 D QCOM PowerHAL: Activity launch hint handled 07-05 15:36:29.022 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@4f13a10 07-05 15:36:29.037 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory 07-05 15:36:29.037 29406 29406 E Instrumentation: java.lang.Throwable 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.Instrumentation.getFactory(Instrumentation.java:1224) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.Instrumentation.newActivity(Instrumentation.java:1215) 07-05 15:36:29.037 29406 29406 E Instrumentation: at X.05O.newActivity(:3382) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.os.Handler.dispatchMessage(Handler.java:106) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.os.Looper.loop(Looper.java:193) 07-05 15:36:29.037 29406 29406 E Instrumentation: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-05 15:36:29.037 29406 29406 E Instrumentation: at java.lang.reflect.Method.invoke(Native Method) 07-05 15:36:29.037 29406 29406 E Instrumentation: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-05 15:36:29.037 29406 29406 E Instrumentation: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 07-05 15:36:29.045 908 2933 I ActivityManager: START u0 {flg=0x2000000 cmp=com.facebook.katana/com.facebook.gdp.ProxyAuth (has extras)} from uid 10262 07-05 15:36:29.047 665 665 D QCOM PowerHAL: LAUNCH HINT: ON 07-05 15:36:29.068 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@f095b27 07-05 15:36:29.069 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory 07-05 15:36:29.069 29406 29406 E Instrumentation: java.lang.Throwable 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.Instrumentation.getFactory(Instrumentation.java:1224) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.Instrumentation.newActivity(Instrumentation.java:1215) 07-05 15:36:29.069 29406 29406 E Instrumentation: at X.05O.newActivity(:3382) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.os.Handler.dispatchMessage(Handler.java:106) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.os.Looper.loop(Looper.java:193) 07-05 15:36:29.069 29406 29406 E Instrumentation: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-05 15:36:29.069 29406 29406 E Instrumentation: at java.lang.reflect.Method.invoke(Native Method) 07-05 15:36:29.069 29406 29406 E Instrumentation: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-05 15:36:29.069 29406 29406 E Instrumentation: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 07-05 15:36:29.074 908 5828 I ActivityManager: START u0 {cmp=com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity (has extras)} from uid 10262 07-05 15:36:29.075 665 665 D QCOM PowerHAL: LAUNCH HINT: ON 07-05 15:36:29.121 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@d695c17 07-05 15:36:29.125 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory 07-05 15:36:29.125 29406 29406 E Instrumentation: java.lang.Throwable 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.Instrumentation.getFactory(Instrumentation.java:1224) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.Instrumentation.newActivity(Instrumentation.java:1215) 07-05 15:36:29.125 29406 29406 E Instrumentation: at X.05O.newActivity(:3382) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.os.Handler.dispatchMessage(Handler.java:106) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.os.Looper.loop(Looper.java:193) 07-05 15:36:29.125 29406 29406 E Instrumentation: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-05 15:36:29.125 29406 29406 E Instrumentation: at java.lang.reflect.Method.invoke(Native Method) 07-05 15:36:29.125 29406 29406 E Instrumentation: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-05 15:36:29.125 29406 29406 E Instrumentation: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 07-05 15:36:29.166 4837 4846 W System : A resource failed to call end. 07-05 15:36:29.250 665 665 D QCOM PowerHAL: LAUNCH HINT: OFF 07-05 15:36:29.266 908 952 I ActivityManager: Displayed com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity: +237ms 07-05 15:36:29.266 29463 29463 W BackgroundBroad: type=1400 audit(0.0:9257): avc: denied { read } for name="stats" dev="proc" ino=4026533031 scontext=u:r:untrusted_app:s0:c6,c257,c512,c768 tcontext=u:object_r:proc_qtaguid_stat:s0 tclass=file permissive=0 07-05 15:36:29.447 492 1273 D SurfaceFlinger: duplicate layer name: changing Surface(name=6e58560 com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity)/@0x13e5ed5 - animation-leash to Surface(name=6e58560 com.facebook.katana/com.facebook.gdp.LightWeightProxyAuthActivity)/@0x13e5ed5 - animation-leash#1 07-05 15:36:29.456 492 1273 D SurfaceFlinger: duplicate layer name: changing Surface(name=Dim Layer for - Task=2317)/@0x8471ddb - animation-leash to Surface(name=Dim Layer for - Task=2317)/@0x8471ddb - animation-leash#1 07-05 15:36:29.465 908 2933 I ActivityManager: START u0 {cmp=com.facebook.katana/.gdp.WebViewProxyAuth (has extras)} from uid 10262 07-05 15:36:29.467 665 665 D QCOM PowerHAL: LAUNCH HINT: ON 07-05 15:36:29.469 665 665 D QCOM PowerHAL: Activity launch hint handled 07-05 15:36:29.507 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@a7d9bb4 07-05 15:36:29.509 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory 07-05 15:36:29.509 29406 29406 E Instrumentation: java.lang.Throwable 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.Instrumentation.getFactory(Instrumentation.java:1224) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.Instrumentation.newActivity(Instrumentation.java:1215) 07-05 15:36:29.509 29406 29406 E Instrumentation: at X.05O.newActivity(:3382) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.os.Handler.dispatchMessage(Handler.java:106) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.os.Looper.loop(Looper.java:193) 07-05 15:36:29.509 29406 29406 E Instrumentation: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-05 15:36:29.509 29406 29406 E Instrumentation: at java.lang.reflect.Method.invoke(Native Method) 07-05 15:36:29.509 29406 29406 E Instrumentation: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-05 15:36:29.509 29406 29406 E Instrumentation: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 07-05 15:36:29.517 908 8581 I ActivityManager: START u0 {cmp=com.facebook.katana/.gdp.ProxyAuthDialog (has extras)} from uid 10262 07-05 15:36:29.519 665 665 D QCOM PowerHAL: LAUNCH HINT: ON 07-05 15:36:29.567 29406 29406 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@19959e4 07-05 15:36:29.569 29406 29406 E Instrumentation: Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory 07-05 15:36:29.569 29406 29406 E Instrumentation: java.lang.Throwable 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.Instrumentation.getFactory(Instrumentation.java:1224) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.Instrumentation.newActivity(Instrumentation.java:1215) 07-05 15:36:29.569 29406 29406 E Instrumentation: at X.05O.newActivity(:3382) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2869) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.os.Handler.dispatchMessage(Handler.java:106) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.os.Looper.loop(Looper.java:193) 07-05 15:36:29.569 29406 29406 E Instrumentation: at android.app.ActivityThread.main(ActivityThread.java:6718) 07-05 15:36:29.569 29406 29406 E Instrumentation: at java.lang.reflect.Method.invoke(Native Method) 07-05 15:36:29.569 29406 29406 E Instrumentation: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 07-05 15:36:29.569 29406 29406 E Instrumentation: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 07-05 15:36:29.651 492 540 D SurfaceFlinger: duplicate layer name: changing com.facebook.katana/com.facebook.katana.gdp.ProxyAuthDialog to com.facebook.katana/com.facebook.katana.gdp.ProxyAuthDialog#1 07-05 15:36:29.697 492 1763 D SurfaceFlinger: duplicate layer name: changing Dim Layer for - Task=2317 to Dim Layer for - Task=2317#1 07-05 15:36:29.720 665 665 D QCOM PowerHAL: LAUNCH HINT: OFF 07-05 15:36:29.731 492 540 W SurfaceFlinger: Attempting to set client state on removed layer: Dim Layer for - Task=2317#0 07-05 15:36:29.731 492 540 W SurfaceFlinger: Attempting to destroy on removed layer: Dim Layer for - Task=2317#0

Noté el uso del modo NATIVE_WITH_FALLBACK y cambié a WEB_ONLY para probar. Si bien eso me ayuda a superar el problema original que se muestra arriba, crea otro. En lugar de pedirme detalles de inicio de sesión, muestra lo siguiente:

De nuevo, el texto es:

Anteriormente inició sesión en $ MY_APP con Facebook. ¿Te gustaria continuar?

Si elijo continuar (no hay otra opción que cancelar), vuelve a mi aplicación, pero Firebase me da el error ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL , lo que sugiere que la cuenta ya está asociada con otro proveedor. Cuando registro en la consola de Firebase, la cuenta se muestra como una de Facebook. Entonces, es como tener instalada la aplicación de Facebook que Firebase piensa que es un proveedor social separado o algo así.

Finalmente, y algo desesperado, intenté cambiar el modo de autenticación a WEB_VIEW_ONLY . Efectivamente, esto me mostró exactamente la misma experiencia que al iniciar sesión sin Facebook instalado. Además, todo funcionó como se esperaba.

Mi problema es que no estoy completamente seguro de cuáles son las implicaciones de todo esto (NOTA: vea mi actualización a continuación). Recuerdo haber leído en alguna parte sobre el inicio de sesión nativo de Facebook que ya no era una cosa (o tal vez era lo contrario y debería usarse). Básicamente, estoy muy confundido y realmente agradecería cualquier respuesta a las siguientes preguntas:

  • ¿ WEB_VIEW_ONLY es algo aceptable?
  • ¿Por qué el uso de NATIVE_WITH_FALLBACK muestra el error al comienzo de mi publicación?
  • ¿Por qué WEB_ONLY parece tratar la misma cuenta como un proveedor diferente?
  • ¿Por qué el SDK de inicio de sesión de Facebook se comporta de manera tan diferente en estos modos? Pensé en ellos como una preferencia inocua que no tuvo ningún impacto en la autenticación en sí misma, pero Dios estaba equivocado.

Tenga en cuenta que en todos los casos estoy siguiendo los documentos oficiales , incluido el uso de la última versión del SDK:

implementation ''com.facebook.android:facebook-login:[5,6)''

Gracias por cualquier ayuda

ACTUALIZACIÓN: Actualicé mi aplicación a WEB_VIEW_ONLY y la volví a enviar. Facebook ahora me ha dicho:

Su aplicación ahora infringe la Política de plataforma 8.2: las aplicaciones nativas de iOS y Android que implementan el inicio de sesión de Facebook deben usar nuestros SDK oficiales para iniciar sesión. Asegúrese de que su aplicación esté utilizando la versión más reciente de nuestro SDK para iniciar sesión.

Así que estoy atrapado entre una roca y un lugar difícil en este momento.


En la parte superior de tus registros, dice
Key hash GtvUdcOKFRAE0RY0LIw5veCA+M8= does not match any stored key hashes.

Probablemente esté utilizando keyhash incorrecto cuando compila para su lanzamiento. Aparentemente, este problema ocurre cuando usa keyhash incorrecto como se explica en este enlace .

En cuanto a por qué funciona en modo WEB, es porque SDK verifica keyhash y, como usted va a la página web, no obtiene el error. Está ejecutando en modo de depuración y el hash de clave de modo de depuración puede ser correcto, lo que podría ser una respuesta a por qué funciona en su dispositivo.


Muchas de las respuestas aquí ofrecen parte de la solución, pero creo que esta es la solución completa y la explicación.

El problema que enfrenta tiene que ver con los valores de HashKey que no coinciden con el dispositivo en el que creó el apk . La computadora que usa, mac, pc, etc., que ejecuta el apk de compilación tiene una clave hash diferente y esa clave hash se fusiona en la compilación apk final para que el inicio de sesión de Facebook no funcione si la compilación se realiza desde una computadora diferente.

La solución es hacer 2 cosas.

Primero, cada vez que crea una compilación apk en una nueva computadora, necesita generar la cadena HashKey y agarrarla. El código para hacer esto está aquí:

public static String getMyHashKey(Context context, String packageName){ try { PackageInfo info = context.getPackageManager().getPackageInfo( packageName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance(SHA); md.update(signature.toByteArray()); return Base64.encodeToString(md.digest(), Base64.DEFAULT); } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; }

En segundo lugar, debe agregar esa Cadena a su aplicación de Facebook en la configuración. Esto se puede hacer siguiendo estos 2 pasos:

1) Vaya a developers.facebook.com y vaya a la aplicación en cuestión. Luego haga clic en Configuración -> Básico.

2) Después de eso, desplácese hacia abajo hasta el área de Android y complete los campos. Tenga en cuenta que puede tener múltiples HashKeys!

3) Guarde su actualización, espere unos minutos para que se realice la actualización e intente nuevamente. Eso debería resolver el problema que enfrenta.


Para resolver su problema, inicie sesión en Developer Accout > Aplicación de Facebook > Configuración ahora, pegue el hash la aplicación en el campo de key hashes y luego guarde las configuraciones. Ejecute su aplicación y verá que el error desapareció.

Puede encontrar la captura de pantalla útil para la configuración de la aplicación.


Su registro dice que el hash clave no coincide, por lo que debe agregar hash clave en la cuenta de desarrollador de Facebook. Estoy compartiendo un código de paz, una función que solo necesita llamar a esta función e imprimir el registro que muestra keyhash, solo actualice keyhash en su cuenta de desarrollador de fb ..

public void generatekeyhash() { try { PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), 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 (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } }