J'ai une application en production sur le Play Store qui utilise un identifiant avec le SDK de Facebook . Lorsque je débogue l'application depuis Eclipse, il n'y a pas de problème, mais lorsqu'il est en production, il me donne l'erreur suivante après que Facebook m'a demandé de permissions . J'ai ajouté sur la page de mon application sur developers.facebook.com la clé de hachage générée avec keytool à l'aide de cette commande:
keytool -exportcert -alias diego -keystore "C:\Utilisateurs\Diego\Desktop\CeluChat.KeyStore" | "C:\openssl\bin\openssl.exe" sha1 -binary | Base64 "C:\openssl\bin\openssl.exe"
CeluChat.KeyStore est le magasin de clés que j'ai utilisé lors de l'exportation de l'application signée et lorsque keytool m'a demandé le mot de passe, j'ai saisi le même résultat lors de l'exportation.
Mais l'erreur qui me donne sur la production (téléchargée à partir de Play Store) est:
10-20 22: 21: 10.752: W/fb4a (:): BlueServiceQueue (5872): com.facebook.http.protocol.ApiException: Clé de hachage VQ3XhZb5_tBH9oGe2WW32DDdNS0 ne correspond à aucun hachage de clé stocké.
Le hachage de clé sur l'exception est différent du hachage de clé généré avec keytool. Quoi qu'il en soit, j'ai ajouté le hachage de clé sur Facebook, mais cela ne fonctionne toujours pas.
Facebook un peu comment remplace +, - et/avec _
Essayez donc de remplacer _ avec +, - et/et d’ajouter cette clé de hachage.
Espérons que cela fonctionne.
Je l'ai utilisé pour montrer la clé lorsque j'ai exécuté mon application. Dans mon cas, j'obtenais le hachage de clé incorrect à partir de la commande keytool. Notez que si vous entrez un mot de passe incorrect (volontairement), au lieu de recevoir une erreur, une clé incorrecte est générée. Utilisez ceci pour obtenir le hachage correct et voir s'il correspond à celui du journal des erreurs.
try {
PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("MY KEY HASH:", sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Aussi, si pour une raison quelconque, la méthode ci-dessus ne fonctionne pas. Essayez d’utiliser cette APK pour générer le hachage de clé correct. N'oubliez pas que vous devez le signer avec le certificat que vous essayez de récupérer (déboguer ou libérer). Installez-le sur votre appareil de test et exécutez-le.
Je viens de découvrir un bogue avec la page d’entrée Exemple de clé d’application: si vous collez une clé de hachage depuis l’application sans appuyer sur Entrée, puis cliquez sur le bouton "Enregistrer les modifications", le code nouvellement entré disparaîtra mais la page affichera un message "Enregistré." ! " message de réponse. Ce n'est pas vrai: cela n'a pas sauvé. Vous devez appuyer sur la touche Entrée après avoir collé la touche Dièse, puis sur "Enregistrer les modifications".
J'ai enregistré une clé comprenant le caractère final =. Ça a marché.
Simple mettre la clé de hachage de message d'erreur retourné:
10-20 22:21:10.752: W/fb4a(:):BlueServiceQueue(5872): com.facebook.http.protocol.ApiException: Key hash VQ3XhZb5_tBH9oGe2WW32DDdNS0 does not match any stored key hashes.
VQ3XhZb5_tBH9oGe2WW32DDdNS0
Sur les développeurs Facebook, les hachages clés de votre application.
J'espère que cette aide.
Eh bien, si vous utilisez Windows, utilisez cette commande dans cmd.
Déplacer vers C:\Program Files\Java\jdk1.8.0_25\bin
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64
Lors de la génération de la clé de hachage, vous devez utiliser openssl-0.9.8e_X64.Zip sur Windows, vous ne pouvez pas utiliser openssl-0.9.8k_X64.Zip.
C'est la solution.
C'est une belle question. Et il y a 2 façons de s'y prendre. Ce qui se passe généralement avec nous, lors de l’intégration du SDK de Facebook pour Android, nous suivons les instructions de le site du développeur de facebook .
Mais une fois que l'application est dans le magasin de jeu, nous avons tendance à oublier une procédure qui est toujours en attente. Et nous finissons sur la même erreur:
05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): Exception during service
05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): com.facebook.http.protocol.ApiException: Key hash XXXXXXXXXXXXXX does not match any stored key hashes.
Jus a obtenu une liste de contrôle pour ceci:
1) Utilisation de la clé de débogage lors du développement de l'application
Le site de développeur de Facebook est très utile à cet égard. Il suffit de copier/coller le code qu’ils ont dans la page Mise en route dans votre invite de commande. à savoir:
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
Le mot de passe correspondant est Android et la clé de débogage la suit.
2) Génération de la clé de débogage après la signature de l'application
Une fois que l'application est prête à être téléchargée sur le Google Play Store, vous devez la signer en utilisant une clé, dont la valeur est générée à partir du magasin de clés. Ce qui est bien expliqué par Satheesh dans sa réponse . en utilisant :
keytool -exportcert -alias <Alias Name here> -keystore <Path to keystore> | openssl sha1 -binary | openssl base64
Ce qui vous donne une clé différente de la clé de débogage.
Après avoir essayé tout ce qui précède, j'ai essayé cela .. et travaillé !!!
"_"
par "/"
et ajoutez un "="
à la fin, Veuillez suivre la méthode ci-dessous pour générer la clé de hachage. Ceci est suggéré par @lucianbase sur cette page https://github.com/AntonioCuevaUrraco/nativescript-facebook-login/issues/14
Générez la clé SHA1 de votre application à l'aide d'Android studio ou de l'outil cmd . copiez-le .__ comme ce CD: A1: EA: A3: 5C: 5C: 68: FB: FA: 0A: 6B: E5: 5A: 72: 64: DD: 26: 8D: 44: 84 open http://tomeko.net/online_tools/hex_to_base64.php pour convertir votre valeur SHA1 en base64 . C’est ce que Facebook demande à obtenir le hachage généré "********. ************ = "et copiez la clé de hachage sur l'application facebook.
Il suffit de remplacer le hachage de la clé d'erreur dans votre https://developers.facebook.com/app application ...!
100 pour cent, cela fonctionnera à coup sûr.
-Sunil
eh bien, le meilleur et facile moyen est comme ça. si vous voyez ce problème sur l'écran de votre téléphone. Vous devriez voir ce problème avec le studio Android LOGCAT. ça va aimer ça
01-26 14:58:22.885 14851-19534/? W/fb4a.BlueServiceQueue: Exception during service
X.1xO: [code] 404 [message]: Key hash 961x8mIbWmA7TRRpbk...= does not match any stored key hashes. (404) [extra]: null
at X.0fG.D(:240135)
at X.0k8.F(:255078)
at X.3gX.EUB(:738232)
at X.0fo.handleResponse(:242693)
at X.0k5.run(:254998)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:428)
at X.0NH.run(:187661)
at X.0JQ.run(:49671)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1133)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:607)
at X.0NM.run(:187873)
at Java.lang.Thread.run(Thread.Java:761)
copiez cette clé de hachage à partir de logcat, c'est-à-dire que je l'avais rendue privée (...) et collez-la sur votre page de développeur facebook. Cela résoudra votre problème immédiatement. Assurez-vous également que la clé de hachage de votre APK publié est différente de la clé de hachage originale téléchargée à partir de Google Play.