Je travaille sur une application Android dans laquelle je souhaite intégrer une fonctionnalité de publication sur Facebook J'ai téléchargé le SDK Facebook-Android, et j'ai le Le readme.md (fichier texte) dans lequel il est mentionné pour générer La clé de hachage pour Android. Comment puis-je le générer?
Voici les étapes
Téléchargez openssl à partir de code Google (si vous avez une machine 64 bits, vous devez télécharger openssl-0.9.8e X64 pas la dernière version)
Extrait-le. créer un dossier OpenSSL dans C:/et copier le code extrait ici.
détecter le chemin du fichier debug.keystore. Si vous ne trouvez pas, faites une recherche dans C:/et utilisez le chemin dans la commande à l'étape suivante.
détectez votre chemin keytool.exe et accédez à l'invite de commande dir/in et exécutez cette commande en 1 ligne.
$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrateur.Android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary | "C:\OpenSSL\bin\openssl" base64
Pour plus d'informations visitez ici
Vous pouvez utiliser ce code dans n'importe quelle activité. Il enregistrera la clé de hachage dans le logcat, qui est la clé de débogage. C'est facile et c'est un soulagement que d'utiliser SSL.
PackageInfo info;
try {
info = getPackageManager().getPackageInfo("com.you.name", 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));
//String something = new String(Base64.encodeBytes(md.digest()));
Log.e("hash key", something);
}
} catch (NameNotFoundException e1) {
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());
}
Vous pouvez supprimer le code après avoir connu la clé;)
J'ai créé un petit outil pour Windows et Mac OS X. Ajoutez simplement le fichier de stockage de clés et récupérez la clé de hachage.
Si vous voulez le fichier debug.keystore par défaut, utilisez l'alias et le mot de passe par défaut. Sinon, utilisez votre propre fichier de clés et vos valeurs.
Check it out, téléchargez la version Windows ou téléchargez la version Mac OS X (Dev-Host est peut-être en panne parfois ... donc si le lien est brisé, PM moi et je vais le réparer).
J'espère que cela vous aidera les gars ...
31 décembre 2014 - EDIT: Changé d'hôte en AFH .. Merci de me prévenir si les liens sont brisés
21 nov 2013 - EDIT:
À la demande des utilisateurs, j'ai ajouté un emplacement de magasin de clés par défaut et un bouton DONATE. N'hésitez pas à l'utiliser si je vous ai aidé. :)
Les instructions actuellement dans le tutoriel Android de Facebook ne fonctionnent pas bien sous Windows. Leur exemple montre comment diriger la sortie de keytool vers openssl, mais si vous essayez sous Windows, la sortie n’est pas valide pour une raison quelconque. J'ai découvert que je devais utiliser des fichiers intermédiaires pour que cela fonctionne correctement. Voici les étapes qui ont fonctionné pour moi:
Commencez par télécharger openssl pour Windows à partir de Google.
C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin
C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin
C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt
Après l'exécution de ces commandes, le hachage valide est stocké dans le fichier base64.txt. Copiez-le et collez-le dans les paramètres de votre application sur Facebook.
C'est ce qui est donné sur la page officielle de Facebook :
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
Laissez-moi briser cette commande en fragments.
Recherchez "keytool.exe"
. Vous pouvez rechercher cela sur le lecteur C :. Vous pouvez le trouver dans "Java jdk"
ou "Java jre"
. Si vous avez installé plusieurs versions, choisissez-en une.
Ouvrez une invite CMD et accédez au répertoire ci-dessus où vous avez trouvé "keytool.exe"
.
Clip le "exe`" et collez la commande ci-dessus fournie sur la page Facebook.
Vous obtiendrez une erreur en indiquant que OpenSSL n'est pas reconnu en tant que commande d'entrée-sortie . Solution: Téléchargez "Openssl" depuis OpenSSL (si vous avez une machine 64 bits, vous devez download openssl-0.9.8e X64 ). Extrayez et enregistrez-le n'importe où ... Je l'ai enregistré sur le lecteur C: dans le dossier OpenSSl
Remplacez openssl dans la commande ci-dessus dans laquelle vous obteniez une erreur OpenSSL avec "C:\OpenSSL\bin\openssl" aux deux endroits après le tuyau, "|".
Si un mot de passe vous est demandé, entrez Android
.
Et vous obtiendrez votre clé de hachage. Pour plus d'informations, reportez-vous à nouveau à la page Facebook.
Ajoutez ce code à onCreate
de votre activité, il imprimera le hachage sous la balise KeyHash dans votre logCat
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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
Vous pouvez ajouter plusieurs hashkeys pour votre compte. Par conséquent, si vous avez exécuté debug n'oubliez pas de le réexécuter en mode release .
Pour obtenir le code de hachage de la clé Android, procédez comme suit:
cd C:\Program Files\Java\jdk1.6.0_26\bin
keytool -export -alias myAlias -keystore C:\Users\
votre nom d'utilisateur\.Android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
La solution la plus simple que j'ai trouvée est la suivante:
Recherchez la ligne dans le journal qui ressemble à ceci:
04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch.
Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
application settings. Check your application settings at
http://www.facebook.com/developers
Copiez "abcdefgHIJKLMN + OPqrstuvwzyz" et collez-le dans la zone de hachage de clé Android de Facebook.
J'ai fait de cette façon pour Linux OS & Windows OS:
keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64
Veuillez modifier nom d'alias _ et le magasin de clés avec son chemin d'accès selon vos besoins.
Le terminal aurait demander pour mot de passe du magasin de clés. Vous devez fournir le mot de passe pour le même magasin de clés.
Donc, finalement, vous obtenez le Release Hashkey.
Étapes pour LibérerHashkey:
keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64
Veuillez modifier nom d'alias _ et le magasin de clés avec son chemin d'accès selon vos besoins.
Le terminal aurait demander pour mot de passe du magasin de clés. Vous devez fournir le mot de passe pour le même magasin de clés.
Donc, finalement, vous obtenez le Release Hashkey.
Terminé
téléchargez openSSL pour Windows ici vous pouvez trouver ici 64 bits et 32 bits
extraire le fichier téléchargé
C:\Utilisateurs\nom d'utilisateur\.Android\debug.keystore
keytool -exportcert -alias androiddebugkey -keystore C:\Utilisateurs\nom_utilisateur.Android\debug.keystore | "C:\openSSL\bin\openssl" sha1 -binary | "C:\openSSL\bin\openssl" base64
Vous devez créer un fichier de clés à l'aide de l'outil de clé pour les applications signées pour Android, comme indiqué dans la procédure décrite dans Site Android , puis vous devez installer Cygwin, puis OpenSL à partir de code google puis exécuter commande suivante et vous obtiendrez la clé de hachage pour Android, puis vous la mettrez dans l’application facebook que vous avez créée. Et puis, vous pouvez accéder à l'application Facebook via l'application Android pour le mur d'affichage ("publ_stream") pourrait être un exemple.
$ keytool -exportcert -alias nom_alias -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64
Vous devez exécuter la commande ci-dessus depuis cygwin.
Ouvrez simplement votre fichier d’activité principale et créez la fonction de mention ci-dessous:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"your.application.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) {
}
1.1 Exécutez votre application, cela générera une clé de hachage pour votre application.
Maintenant, ouvrez le journal du chat, effectuez une recherche avec "KeyHash" et copiez la clé de hachage.
Une fois que vous générez la clé de hachage, vous pouvez supprimer cette fonction.
Téléchargez openSSL -> Installez-le -> il s’installe généralement dansC:\OpenSSL
puis ouvrez cmd et tapez
cd../../Program Files (Enter)
Java (Enter)
dir (Enter)
cd jdk1.6.0_17 (varies with jdk versions) (Enter)
pour vérifier la version de jdk, allez dans C:/fichiers de programme/Java/jdk_version
cd bin (enter)
keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.Android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)
Il vous demandera un mot de passe qui est Android.
1) Créez une clé pour signer votre application et mémorisez l’alias.
2) Installez OpenSSL.
3) Placez le dossier bin d'OpenSSL dans votre chemin.
4) Suivez les étapes décrites dans la section "Configuration de la connexion unique" du FB-Android-SDK page et générez votre clé de hachage. Assurez-vous de mettre le bon nom de fichier alias et keystore.
5) Créez une application sur Facebok, puis sous l'onglet Appareils mobiles, entrez cette clé de hachage.
Documentation officielle sur site développeur facebook :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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) {
}
Pour Linux
Terminal ouvert:
Pour la construction du débogage
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
vous trouverez le dossier debug.keystore à partir du dossier ".Android", copiez-le et collez-le sur le bureau, puis exécutez la commande ci-dessus.
Pour publication Build
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
REMARQUE: Assurez-vous que dans les deux cas, vous devez demander un mot de passe. S'il ne demande pas de mot de passe, cela signifie que quelque chose ne va pas dans la commande.
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.Android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
Cela a fonctionné pour moi ...
Pas:
1) Open command line go to - > Java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.Android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
.................... give proper debug.keystore path and openSSL path ..
4) Finley it may be ask u password .. so give password -> Android ...
5) you will get 28 characters that will be your has key
Pour une application Android
Ce code est utilisé pour obtenir la clé de hachage dans votre application Android pour l'intégration de Facebook. J'ai testé tous les appareils et ça marche. Modifiez uniquement le nom du package de ce code:
private void facebookHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashCode = Base64.encodeToString(md.digest(), Base64.DEFAULT);
System.out.println("Print the hashKey for Facebook :"+hashCode);
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
Comme a répondu sur un problème similaire, j’ai trouvé que cela fonctionnait pour moi:
apkname.apk
dont vous souhaitez connaître le hachage dans le dossier 'Java\jdk1.7.0_79\bin'.keytool -list -printcert -jarfile apkname.apk
SHA1
et convertissez-la à l'aide de ce sitePour générer un hachage de votre clé de publication, exécutez la commande suivante sur Mac ou Windows en remplaçant votre alias de clé de publication et le chemin d'accès à votre magasin de clés.
Sous Windows, utilisez:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Cette commande devrait générer une chaîne de 28 caractères. Rappelez-vous que COPIEZ et COLLEZ cette clé Release Hash dans les paramètres Android de votre identifiant d'application Facebook.
image: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png
Voir: https://developers.facebook.com/docs/Android/getting-started#release-key-hash et http://note.taable.com
La solution la plus simple:
La meilleure approche consiste à utiliser le code suivant:
private void getHashKey(String pkgName)
{
try
{
PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = Base64.encodeBytes(md.digest());
_hashKey_et.setText(hashKey);
Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
}
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
Mais j'étais tellement frustré par le fait qu'il n'y a pas d'outil simple pour générer la HashKey pour l'application Facebook. A chaque fois, je devais jouer avec Openssl et Keytool ou utiliser un code pour obtenir le hash de la signature ...
J'ai donc écrit un outil simple KeyGenTool qui fera le travail pour vous: -> KeyGenTool sur Google Play <-
Prendre plaisir :)
Utilisez cette commande après avoir laissé ssl ouvert dans le lecteur c et dans le dossier openssl.
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\AJAY SUNDRIYAL.Android\debug.keystore" | openssl sha1 -binary | openssl base64
J'ai fait une petite erreur qu'il ne faut pas oublier. Si vous utilisez votre magasin de clés, donnez votre nom d'alias, pas androiddebugkey ...
J'ai résolu mon problème. Maintenant, si Facebook est installé sur mon appareil, mon application reçoit toujours des données sur l'intégration de la connexion Facebook. Ne vous souciez que de votre clé de hachage.
S'il vous plaît voir ci-dessous.
C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64
Puis appuyez Enter - Il vous demandera le mot de passe, puis entrez votre mot de passe de magasin de clés, pas Android.
Cool.
Pour les personnes qui ne savent pas coder, l'outil clé de génération d'AivarsDa sur Google Play est la solution la plus simple. récupérez simplement la clé de hachage et copiez-la dans les paramètres de l'application facebook. Le partage sur l'outil keygen provoque le blocage de mon application sur mon téléphone. Je l'ai simplement saisie manuellement dans le bloc-notes et copiée dans fb. Enfin passé cette étape après des jours de frustration
import Java.security.MessageDigest;
import Java.security.NoSuchAlgorithmException;
import Android.os.Bundle;
import Android.app.Activity;
import Android.content.pm.PackageInfo;
import Android.content.pm.PackageManager;
import Android.content.pm.PackageManager.NameNotFoundException;
import Android.content.pm.Signature;
import Android.text.Editable;
import Android.util.Base64;
import Android.util.Log;
import Android.view.Menu;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.EditText;
public class MainActivity extends Activity {
Button btn;
EditText et;
PackageInfo info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
et=(EditText)findViewById(R.id.editText1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
info = getPackageManager().getPackageInfo("com.example.id", 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));
//String something = new String(Base64.encodeBytes(md.digest()));
et.setText("" + something);
Log.e("hash key", something);
}
} catch (NameNotFoundException e1) {
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());
}
}
});
}
}
Pour les fenêtres:-
1.Download openssl(openssl-for-windows)
2.Copy and Paste openssl folder into c drive.
3.C:\Android\.Android\debug.keystore => Debug Keystore path
4.C:\Program Files\Java\jdk1.8.0_181 => JDK PATH
5.Go to jdkpath=>Enter the below command. (keytool inside Debug keystore path)
keytool -exportcert -alias androiddebugkey -keystore C:\Android.android\debug.keystore | "C:\openSSL\bin\openssl" sha1 -binary | "C:\openSSL\bin\openssl" base64
J'ai essayé de générer le hachage de clé à l'aide de keytool
, mais le hachage généré n'est pas valide.
Vous gagnerez du temps et des efforts, si vous pouvez simplement l'obtenir à partir de packageManager
lui-même.
try {
val info = this.packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
MessageDigest.getInstance("SHA").apply {
update(signature.toByteArray())
Log.d("KeyHash:", Base64.encodeToString(digest(), Base64.DEFAULT))
}
}
} catch (e: PackageManager.NameNotFoundException) {
Log.d("KeyHash Exception:", "${e.message}")
} catch (e: NoSuchAlgorithmException) {
Log.d("KeyHash Exception:", "${e.message}")
}
Tout d'abord, pour générer votre hachage de clé sur votre ordinateur local, exécutez l'utilitaire keytool de Java (qui devrait figurer sur le chemin de votre console) sur le magasin de clés de débogage Android. Ceci est, par défaut, dans votre répertoire personnel .Android).
sur Ubuntu, ça me trotte dans mon ordinateur
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
Utilisez ceci pour imprimer le hachage de la clé dans Kotlin
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){
}