SDK Facebook Android: générer le hachage des clés de publication
je construis une application dans laquelle les utilisateurs peuvent se connecter avec Facebook.
j'ai créé les touches 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 debug, tout fonctionne bien.
quand j'exporte le projet pour publication, Il donne cette erreur:
"Invalid key hash. The key hash ****************** does not match any stored key hashes"
je colle la clé imprimée dans le tableau de bord du développeur Facebook, mais l'application me donne toujours cette erreur.
le le paquet complet de mon activity est " com.app.package.views
" et j'ai essayé d'utiliser ce paquet (comme nom de paquet 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 bon hachage de la clé de publication?
9 réponses
Vous avez suivi les étapes que facebook prévoit la création d'une application de connexion?
Vous avez besoin d'une Production keyhash " obtenu à partir de votre version du fichier de clés:
de comand line:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
et ajouter cette clé sur les options de 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 VOTRE_RELEASE_KEY_ALIAS:
keytool -list -keystore /Users/***/Documents/keystore/***.jks
et celui-ci pour obtenir votre sortie keyhash:
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64
ça me va.
la solution la plus simple.
1) signez votre Apk.
2) Connectez votre appareil à la machine et installez signed apk sur l'appareil réel.
3) Lorsque vous appuyez sur facebook login, vous obtiendrez une erreur disant" clé de hachage invalide. La clé de hachage "xxx" ne correspond à aucune clé stockée. ..."sur votre logcat.
4)Copiez la clé de hachage logcat et mettez cette clé developers.facebook.com/apps/104...../settings /
nous devons remplacer le mot" openssl " par le chemin d'un fichier à l'intérieur de 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é.
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é une fois que vous créez un paquet d'application signé. Voici un lien sur la façon de créer des clés de débogage et de publication.
consultez Également ce DONC post.
// ajouter cette méthode pour votre première activité et ouvrir le journal et de recherche pour Base64 tag c'est le Hashkey je hoop il aide
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);
}
}
celui-ci est le moyen le plus facile que j'ai trouvé jusqu'à présent pour générer du hash clé!
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 (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
le moyen le plus simple pour obtenir la clé de hachage libérée apk est : Obtenez la clé SHA1 d'apk libéré en utilisant la commande suivante:
keytool -list -v -keystore keystore_path.jks -alias keystoreAlias
Thn vous obtiendrez la clé SHA1. Copier cette clé et générer la clé de hachage en utilisant le site suivant:
lien pour obtenir la clé de hachage
vous obtiendrez la sortie (base64): copiez-la et utilisez où vous voulez..
keytool -exportcert -alias aliasName -keystore C:\my_release_keystroke_info.jks | openssl sha1 -binary | openssl base64