Je construis une application dans laquelle les utilisateurs peuvent se connecter avec Facebook.
J'ai créé les clés de hachage comme suit:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.app.package",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
Base64.DEFAULT));
Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
Base64.DEFAULT), Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
En mode débogage, tout fonctionne bien.
Lorsque j'exporte le projet pour publication, cela donne l'erreur suivante:
"Invalid key hash. The key hash ****************** does not match any stored key hashes"
Je colle la clé imprimée dans le tableau de bord Facebook Developer, mais l'application me donne toujours cette erreur.
Le package complet de mon activité est "com.app.package.views
" et j'ai essayé d'utiliser ce package (sous le nom Nom du package Google Play) dans le tableau de bord, mais rien n'a changé.
Comment puis-je le résoudre? Comment puis-je générer le hachage de clé de libération correct?
Vous avez suivi les étapes prévues par facebook pour la création d'une application de connexion?
Vous avez besoin d'un 'Production de clés' obtenue à partir de votre magasin de clés de publication:
De la ligne de commande:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Et ajoutez cette clé sur les options de la page de l'application facebook.
Plus d'informations: https://developers.facebook.com/docs/Android/getting-started/
Je trouve une solution. pour Mac
Utilisez celui-ci pour obtenir YOUR_RELEASE_KEY_ALIAS:
keytool -list -keystore /Users/***/Documents/keystore/***.jks
et celui-ci pour obtenir votre release keyhash:
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64
Ça marche pour moi.
La solution la plus simple.
1) Signez votre Apk.
2) Connectez votre appareil à la machine et installez apk signé sur un appareil réel.
3) Lorsque vous vous connectez à Facebook, vous obtiendrez une erreur disant "Hache de clé invalide. Le hachage de clé" xxx "ne correspond à aucune clé enregistrée. ..." sur votre logcat.
4) Copiez la clé de hachage logcat et transmettez-la à developers.facebook.com/apps/104...../settings/
Nous devons remplacer le mot "openssl" par le chemin d'un fichier dans la structure openssl.
Donc, ma commande CMD est:
C:\Program Files\Java\jre1.8.0_45\bin>keytool -exportcert -alias Informatheus -keystore C:\Users\Atendimento\Dropbox\AndroidKeystore\Keystore | C:\Users\Atendimento\Desktop\openssl\bin\openssl sha1 -binary | C:\Users\Atendimento\Desktop\openssl\bin\openssl base64
Ça a marché.
// ajoute cette méthode à votre première activité et ouvre un journal et recherche une balise Base64 c'est la hashtkey i hoop it help
public void getHashkey(){
try {
PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("Base64", Base64.encodeToString(md.digest(),Base64.NO_WRAP));
}
} catch (PackageManager.NameNotFoundException e) {
Log.d("Name not found", e.getMessage(), e);
} catch (NoSuchAlgorithmException e) {
Log.d("Error", e.getMessage(), e);
}
}
Le Kit de développement logiciel (SDK) Facebook utilise deux clés différentes, l’une est la clé de débogage que vous pouvez utiliser pendant votre phase de développement et l’autre est la clé de libération qui est utilisée une fois que vous avez créé un package d’application signé. Voici un lien sur la création de clés de débogage et de libération.
Consultez également this SO post.
Le moyen le plus simple d'obtenir la clé de hachage libérée est la suivante: Obtenez la clé SHA1 de la clé libérée à l'aide de la commande suivante:
keytool -list -v -keystore keystore_path.jks -alias keystoreAlias
Ensuite, vous obtiendrez la clé SHA1. Copiez cette clé et générez la clé de hachage en utilisant le site suivant:
Lien pour obtenir la clé de hachage
Vous obtiendrez Output (base64): copiez-le et utilisez-le où vous voulez.
Pour référence future, si vous avez déjà votre application sur le Play Store, vous pouvez:
Aller au Release Management
sélectionnez App Signing
dans Release Management
Vous pouvez voir la clé SHA1 au format hexadécimal App signing certificate
.
Copiez le SHA1 au format hexadécimal et convertissez-le au format base64, vous pouvez utiliser ceci link do sans la partie SHA1:
de l'hexagone.
Accédez à la console de développeur Facebook et ajoutez la clé (après conversion en base 64) dans le settings —> basic –> key hashes
.