web-dev-qa-db-fra.com

Pourquoi le SDK d'authentification Facebook se comporte-t-il si différemment selon son mode?

J'ai une Android dans l'App Store. Elle utilise Firebase sur le back-end et fournit une connexion sociale via Facebook (et Google).

Récemment, Facebook m'a contacté pour m'avertir que mon application se bloque/ne répond pas lors de la connexion via Facebook. Confus, je me suis lancé dans des tests.

Ce que j'ai trouvé, c'est que si j'utilise la connexion Facebook sans l'application Facebook installée, tout fonctionne parfaitement. L'utilisateur voit une fenêtre de navigateur, peut se connecter, et il est redirigé vers mon application et j'ai son identité. Bien sûr, j'ai trouvé tout cela pendant le développement mais je voulais juste confirmer que les choses fonctionnaient toujours.

Mais lorsque j'installe l'application Facebook (ce que j'ai négligé de faire pendant le développement), j'ai constaté que cela ne fonctionnait plus. Au lieu de cela, l'utilisateur est redirigé vers cette page:

enter image description here

Pour la recherche et l'accessibilité, le texte de cette image se lit comme suit:

Erreur de connexion: une erreur s'est produite lors de la connexion à cette application. Veuillez réessayer plus tard.

J'ai vérifié les journaux lorsque cela se produit et j'ai trouvé ce qui suit - mai être pertinent mais je ne suis pas vraiment sûr:

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

J'ai remarqué l'utilisation de NATIVE_WITH_FALLBACK mode et changé en WEB_ONLY tester. Bien que cela me permette de surmonter le problème d'origine illustré ci-dessus, cela en crée un autre. Au lieu de me demander des informations de connexion, cela montre ce qui suit:

enter image description here

Encore une fois, le texte est:

Vous vous êtes précédemment connecté à $ MY_APP avec Facebook. Voulez-vous continuer?

Si je choisis de continuer (il n'y a pas d'autre choix que d'annuler), cela revient à mon application mais Firebase me donne le ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL erreur, suggérant que le compte est déjà associé à un autre fournisseur. Lorsque j'archive la console Firebase, le compte s'affiche comme étant un compte Facebook. C'est donc comme si l'application Facebook était installée, Firebase pense que c'est un fournisseur social distinct ou quelque chose du genre.

Enfin, et un peu désespéré, j'ai essayé de basculer le mode d'authentification sur WEB_VIEW_ONLY. Effectivement, cela m'a montré exactement la même expérience que lors de la connexion sans Facebook installé. De plus, tout a fonctionné comme prévu.

Mon problème est que je ne suis pas entièrement sûr des implications de tout cela (NOTE: voir ma mise à jour ci-dessous). Je me souviens avoir lu quelque part que la connexion native à Facebook n'était plus vraiment une chose (ou peut-être que c'était l'inverse et qu'elle devrait être utilisée). Fondamentalement, je suis très confus et j'apprécierais vraiment toutes les réponses aux questions suivantes:

  • Utilise WEB_VIEW_ONLY une chose acceptable à faire?
  • Pourquoi l'utilisation de NATIVE_WITH_FALLBACK afficher l'erreur au début de mon message?
  • Pourquoi WEB_ONLY semble traiter le même compte comme un fournisseur différent?
  • Pourquoi le SDK de connexion Facebook se comporte-t-il si différemment entre ces modes? Je les considérais comme étant un - préférence inoffensif qui n'avait aucun impact sur l'authentification elle-même, mais bon sang j'avais tort.

Notez que dans tous les cas, je suis les documents officiels , y compris en utilisant la dernière version du SDK:

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

Merci pour toute aide.

MISE À JOUR: J'ai mis à jour mon application vers WEB_VIEW_ONLY et l'a soumis à nouveau. Facebook m'a maintenant dit:

Votre application est maintenant en violation de la politique de plate-forme 8.2: iOS natif et Android qui implémentent la connexion Facebook doivent utiliser nos SDK officiels pour la connexion. Veuillez vous assurer que votre application utilise la version la plus récente de notre SDK pour la connexion.

Je suis donc coincé entre un rocher et un endroit dur en ce moment.

22
me--

Voici l'explication de ce problème:

07-05 15: 36: 28.946 29406 4941 W fb4a.BlueServiceQueue: exception pendant le service 07-05 15: 36: 28.946 29406 4941 W fb4a.BlueServiceQueue: X.2LH: [code] 404 [message]: Hachage de clé GtvUdcOKFRAE0RY0LIw5veCA = ne correspond à aucun hachage de clé stocké. (404) [extra]: null

N'oubliez pas que le hachage de clé que vous configurez dans votre application Facebook est lié au magasin de clés (certificat) avec lequel votre application est signée.

enter image description here

Vous devez utiliser le hachage de clé avec lequel vous signez votre application.Si vous ne le connaissez pas, je vous suggère de le récupérer à partir de votre magasin de clés:

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

Pourquoi le SDK de connexion Facebook se comporte-t-il si différemment entre ces modes? Je les considérais comme une préférence inoffensive qui n'avait aucun impact sur l'authentification elle-même, mais mon Dieu, j'avais tort.

Dans le web, vous n'avez pas de problème mais si vous êtes dans une application, vous devez autoriser l'utilisation de l'application, et très important pour cette implémentation dans une application Android , vous devez utiliser le SDK Facebook , et dans ce cas, vous devez obtenir le certificat de hachage de clé avec lequel votre application est signée.

4
Jorgesys

En haut de vos journaux, il est indiqué
Key hash GtvUdcOKFRAE0RY0LIw5veCA+M8= does not match any stored key hashes.

Vous utilisez probablement un porte-clés incorrect lorsque vous générez pour la version. Apparemment, ce problème se produit lorsque vous utilisez un mauvais porte-clés, comme indiqué dans ce lien .

Quant à savoir pourquoi cela fonctionne en mode WEB, c'est parce que keyhash est vérifié par SDK et puisque vous allez à la page Web à la place, vous n'obtenez pas l'erreur. Vous utilisez le mode débogage et le hachage de clé du mode débogage peut être correct, ce qui pourrait expliquer pourquoi cela fonctionne sur votre appareil.

0
Zohaib Amir

Beaucoup de réponses ici offrent une partie de la solution, mais je crois que c'est la solution complète et l'explication.

Le problème auquel vous êtes confronté a à voir avec les valeurs HashKey ne correspondant pas au périphérique sur lequel vous avez construit l'apk . L'ordinateur que vous utilisez, mac, pc, etc. qui exécute l'apk de construction a une clé de hachage différente et cette clé de hachage est fusionnée dans la version apk finale afin que la connexion Facebook ne fonctionne pas si la construction est effectuée à partir d'un autre ordinateur.

La solution est de faire 2 choses.

Tout d'abord, chaque fois que vous créez un build apk sur un nouvel ordinateur, vous devez générer la chaîne HashKey et la récupérer. Le code pour ce faire est ici:

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;
}

Deuxièmement, vous devez ajouter cette chaîne à votre application Facebook dans les paramètres. Cela peut être fait en suivant ces 2 étapes:

1) Allez sur developers.facebook.com et allez sur l'application en question. Cliquez ensuite sur Paramètres -> De base. enter image description here

2) Après cela, faites défiler jusqu'à la zone Android et remplissez les champs. Notez que vous pouvez avoir plusieurs HashKeys!

enter image description here

3) Enregistrez votre mise à jour, attendez quelques minutes que la mise à jour ait lieu et réessayez. Cela devrait résoudre le problème auquel vous êtes confronté.

0
PGMacDesign

Votre journal indique que le hachage de clé ne correspond pas, vous devez donc ajouter un hachage de clé sur le compte de développeur Facebook. ..

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) {

    }
}
0
Hitesh Kushwah

Pour résoudre votre problème, Connectez-vous au compte développeur > Application Facebook > Paramètres Maintenant, collez l'application hash dans key hashes, puis enregistrez les configurations. Exécutez votre application et vous constaterez que l'erreur a disparu.

Screenshot

Vous pouvez trouver la capture d'écran utile pour les paramètres de l'application.

0
Kiran Maniya