En essayant de créer une application Android avec l'intégration de Facebook, je suis arrivé à la partie de la documentation où vous devez générer un fichier de hachage de clé, il est spécifié d'exécuter le code suivant
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore
| openssl sha1 -binary
| openssl base64
Lorsque j'exécute ceci dans mon terminal, une erreur survient pour Keystore ou le mot de passe est incorrect,
Je veux juste générer mon hachage de clé
Est-ce que quelqu'un peut-il me montrer la bonne direction?
Supprimez votre certificat de débogage sous ~/.Android/debug.keystore (sous Linux et Mac OS X); le répertoire est quelque chose comme% USERHOME% /. Android sous Windows.
Le plugin Eclipse devrait alors générer un nouveau certificat lors de la prochaine tentative de création d’un package de débogage.
Faites-moi savoir si cela fonctionne.
Afin de générer un hachage de clé, vous devez suivre quelques étapes faciles.
1) Téléchargez Openssl à partir de: ici.
2) Créez un dossier openssl dans le lecteur C
3) Extraire les fichiers Zip dans ce dossier openssl créé dans C Conduire.
4) Copiez le fichier debug.keystore à partir du dossier . Android de mon case (C:\Users\SYSTEM.Android) et coller dans le dossier JDK bin Dossier dans mon cas (C:\Program Files\Java\jdk1.6.0_05\bin)
5) Ouvrez l'invite de commande et indiquez le chemin du dossier JDK Bin dans mon cas (C:\Program Files\Java\jdk1.6.0_05\bin). .
6) Copiez le code suivant et appuyez sur Entrée
keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c:\openssl\bin\debug.txt
7) Maintenant, vous devez entrer le mot de passe , Password = Android.
8) Si vous voyez dans le dossier openssl Bin, vous obtiendrez un fichier portant le nom de debug.txt
9) Maintenant, vous pouvez redémarrer l'invite de commande ou travailler avec l'invite de commande existante.
10) revenir au lecteur C et donner le chemin du dossier openssl Bin
11) copiez le code suivant et collez
openssl sha1 -binary debug.txt> debug_sha.txt
12) vous obtiendrez le fichier debug_sha.txt dans le dossier bin openssl
13) Encore une fois copier et coller le code suivant
openssl base64 -in debug_sha.txt> debug_base64.txt
14) vous obtiendrez debug_base64.txt dans le dossier bin openssl
15) open debug_base64.txt fichier Voici votre clé de hachage.
D'après mon expérience, openssl étant toujours gênante, j'ai essayé la deuxième méthode proposée par Facebook. Et c'est merveilleux. C'est la meilleure méthode pour obtenir la clé de hachage.
La deuxième option consiste à imprimer le hachage de la clé envoyé à Facebook et à utiliser cette valeur. Apportez les modifications suivantes à la méthode onCreate () dans votre activité principale:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto",
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 (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
...other operations
}//end of onCreate
Remplacez com.facebook.samples.loginhowto par votre propre nom de package (nom de package dans Manifest.xml).
Lien officiel - https://developers.facebook.com/docs/Android/login-with-facebook/ (voir le bas de la page)
openssl
openssl
de C:
drivebin
sur openssl
c'est-à-dire C:\openssl\bin
dans l'invite de commandelancez la commande suivante pour générer votre keyhash. Lors de la génération de hashkey, il devrait vous demander un mot de passe.
keytool -exportcert -alias androiddebugkey -keystore "C:\Utilisateurs\Anhsirk.Android\debug.keystore" | openssl sha1 -binary | openssl base64
NOTE: dans le code ci-dessus, notez que vous devez donner votre chemin d'accès à l'utilisateur ( c'est-à-dire que dans mon cas, il s'agit de C:\Users\Anhsirk, il vous suffit de changer cela pour votre compte d'utilisateur.
Donnez le mot de passe comme Android
. Si le mot de passe n’est pas demandé, le chemin du magasin de clés est incorrect.
Si tout fonctionne bien, vous devriez obtenir le hashkey ci-dessous.
La bonne clé peut être obtenue à partir de l'application elle-même en ajoutant le code suivant pour indiquer le hachage de clé approprié (dans le cas de Facebook SDK 3.0, cela fonctionne)
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) {
}
Remplacez com.package.mypackage par le nom de votre package.
I. Créer un débogage de hachage pour Facebook
Ajouter du code pour imprimer la clé de hachage pour facebook
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.google.shoppingvn", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
II. Créer une version de clé de hachage pour facebook
(appuyez sur) keytool -exportcert -alias gci -keystore D:\folder\keystorerelease | C:\openssl\bin\openssl sha1 -binary | C:\openssl\bin\openssl base64. Remarque: D:\folder\keystorerelease: est le chemin de votre version de keystorerelease.
Entrer le mot de passe du magasin de clés: Il s’agit du mot de passe lorsque vous enregistrez une nouvelle version.
Ensuite, vous aurez un hachage de clé: jDehABCDIQEDWAYz5Ow4sjsxLSw =
Se connecter à Facebook. Accès à gérer les applications. Collez le hachage de clé dans votre application sur developers.facebook.com.
LA SOLUTION LA PLUS SIMPLES POUR CE PROBLÈME:
J'ai ce problème depuis deux mois maintenant. Mes hachages de clés ont été faits jusqu'à 9. Aujourd'hui, j'ai finalement trouvé la solution simple:
ÉTAPE 1:
Installez le sdk facebook que vous avez téléchargé à partir de la page de développeur facebook sur votre téléphone. N'installez pas l'application facebook normale. Assurez-vous que vous pouvez vous connecter à Facebook. Puis déconnectez-vous.
ÉTAPE 2:
Exportez votre application avec votre clé de version finale sous forme d'apk, comme vous le feriez lorsque vous la téléchargiez sur le PlayStore.
ÉTAPE 3:
Mettez le fichier Apk sur votre téléphone via un câble USB ou une clé USB.
ÉTAPE 4:
Installez votre application à l'aide d'un gestionnaire de fichiers: Exemple
ÉTAPE 5:
Lancez votre application et essayez de vous connecter avec Facebook. Une boîte de dialogue s'ouvre et vous indique: "la clé YOURHASHKEY n'a pas été trouvée dans la console développeur Facebook"
ÉTAPE 6:
Notez la clé.
ÉTAPE 7:
Mettez-le dans votre console de développeur facebook et enregistrez. Maintenant vous avez fini. Toute personne qui télécharge votre application, publiée avec le magasin de clés utilisé précédemment, peut se connecter à Facebook.
Prendre plaisir
Le moyen le plus simple de générer une clé de hachage.
Condition préalable: clé SHA1
Vous pouvez trouver la clé SHA1 en exécutant signedReport
Voir l'image ci-dessous.
après avoir exécuté le fichier, votre sortie sera générée avec la clé sha1 requise.
Alors allez http://tomeko.net/online_tools/hex_to_base64.php
et collez votre clé sha1
et enfin vous obtiendrez Required HashKey.
Si vous publiez, utilisez le fichier de clés avec lequel vous avez exporté votre application et non le fichier debug.keystore.
Enfin :)
Voici mon histoire:
Ajoutez ce code à votre activité principale, après avoir défini la mise en page.
try {
PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", 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);
//textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
//textInstructionsOrLink.setText(sign);
Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
Log.d("nope","nope");
} catch (NoSuchAlgorithmException e) {
}
Changez PROJECTNAME en votre nom de package!
Le mot de passe du certificat de débogage est Android et non Android.
Une solution en ligne à générer pour facebook
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
Afin de générer le hash de la clé de version, vous devez suivre quelques étapes faciles.
1) Télécharger Openssl
2) Créer un dossier openssl dans le lecteur C
3) Extrayez les fichiers Zip dans ce dossier openssl créé dans C Drive.
4) Copiez le fichier debug.keystore du dossier .Android dans mon cas (C:\Users\SYSTEM.Android) et collez-le dans le dossier JDK bin Dossier dans mon cas (C:\Program Files\Java\jdk1.6.0_05\bin).
5) Ouvrez l’invite de commande et indiquez le chemin du dossier JDK Bin dans mon cas (C:\Program Files\Java\jdk1.7.0_40\bin).
6) Copiez le code suivant et appuyez sur Entrée
keytool -exportcert -alias abcd-keystore D:\Projects\MyAppFolder\keystore.txt | C:\openssl\bin\openssl sha1 - binaire | C:\openssl\bin\openssl base64 ex-keytool -exportcert -alias (votre nom d'alias apk sing entrer ici comme mon signe apk alian nom est abcd) -keystore "fichier de clés signé apk généré apth entrer ici" | "openssl bin dossier path enter here" sha1 - binary | "openssl bin dossier path enter here" base64
7) Vous devez maintenant entrer le mot de passe, Password = (entrez votre mot de passe keystore de signature ici)
8) vous avez le keystore qui est utilisé pour le hachage de la clé de l'application
public String hashkey(Context context) {
String keyhash = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.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));
keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
return keyhash;
}
keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
Même si ce fil est ancien, je voudrais cependant partager mon expérience (récemment commencé à travailler avec Facebook), qui me semble tout à fait claire:
Pour obtenir la clé de développement pour l'intégration de Facebook, utilisez la commande suivante à partir de la ligne de commande dans Windows:
keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .Android\debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | Base64 "C:\openssl\bin\openssl.exe"
REMARQUE !: veuillez remplacer le chemin d'accès à openssl.exe (dans cet exemple, il s'agit de "C:\openssl\bin\openssl.exe") par votre propre chemin d'installation.
Entrez le mot de passe du magasin de clés: Android
Tapez Android comme mot de passe, comme indiqué ci-dessus.
C'est ça! Vous recevrez une clé longue de 28 caractères. À votre santé!
Utilisez la même procédure pour obtenir la clé de libération. Il suffit de remplacer la commande par la suivante et d’utiliser votre alias de clé de libération.
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | "PATH FOR openssl.exe" sha1 -binary | openssl base64
Excellent article de blog sur le sujet
Extraction du hachage de clé à partir de la clé .p12
Grand et simple éditeur hexadécimal pour mac: HexFiend
OpenSSL devrait être préinstallé sur mac, et voici le lien pour la version Windows.
Essayez de passer le mot de passe pour la clé et de le stocker dans le cadre de la commande
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore -keypass Android -storepass Android \
| openssl sha1 -binary \
| openssl base64
J'ai pu effectuer la tâche demandée avec certaines des solutions ici, mais j'ai pensé à moi-même, garçon qui est stupide ... pourquoi ne pas écrire un petit code Java qui fait cela et le ranger dans un Jar, alors j'ai fait ...
A lien à télécharger le bocal
Fonctionne sous Windows 8 ... n'a pas essayé d'autre système d'exploitation.
Salut tout le monde sa mon histoire comment je suis signé a clé pour facebook
tout d’abord, vous venez de copier ces 2 méthodes dans votre première classe
private void getAppKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
System.out.println("HASH " + something);
showSignedHashKey(something);
}
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
}
public void showSignedHashKey(String hashKey) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Note Signed Hash Key");
adb.setMessage(hashKey);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
adb.show();
}
** Appelez funcation getAppKeyHash () depuis votre méthode oncreate si vous voulez un hachage signé, puis créez une construction signée. signé APK **
Si votre mot de passe = Android est incorrect, indiquez le mot de passe de votre ordinateur pour que cela fonctionne pour moi.
Et pour générer du keyHash, essayez ce lien ici
utiliser ceci en kotlin pour imprimer le hachage de la clé dans le journal
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", Android.util.Base64.encodeToString(md.digest(), Android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
La seule chose qui fonctionne pour moi est d'utiliser le mot de passe Android
. Pourquoi n'est-ce pas mentionné dans les guides?