Hachage de clés pour Android-application Facebook
je travaille sur une application Android, dans laquelle je veux intégrer un Facebook affichage de fonction. J'ai téléchargé le SDK Facebook-Android, et j'ai eu le fichier readme.md (fichier texte), dans lequel il est mentionné pour générer le hachage clé pour Androïde. Comment puis-je créer?
28 réponses
Voici les étapes -
-
télécharger openssl à partir de code Google (si vous avez une machine 64 bits, vous devez télécharger openssl-0.9.8 F X64 pas la dernière version)
"
-
L'extraire. créez un dossier - OpenSSL en C: / et copiez le code extrait ici.
-
détecte debug.fichier de magasin de clés chemin. Si vous n'avez pas trouvé, faites une recherche dans C:/ et utilisez le chemin dans la commande suivante.
-
détectez votre clavier.chemin exe et aller à l'invite dir / in command et exécuter cette commande en 1 ligne -
$ keytool-exportcert-alias androiddebugkey-keystore "C:\Documents et paramètres\administrateur.android\debug.keystore" / "C:\OpenSSL\bin\openssl" sha1-binaire |"C:\OpenSSL\bin\openssl" base64
- il demandera le mot de passe, mettez android
- c'est tout. u vous obtenez une clé de hachage
pour plus d'informations visitez ici
Vous pouvez utiliser ce code dans n'importe quelle activité. Il va enregistrer l'hashkey 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. Il suffit de jeter dans le fichier key-store, et obtenir la clé de hachage.
si vous voulez le débogage par défaut.keystore file, utilisez l'alias et le mot de passe par défaut. Sinon, utilisez votre propre fichier keystore et les valeurs.
Check it out", 151950920" télécharger la version Windows ou télécharger la version Mac OS X (Dev-Host peut être en baisse parfois... donc, si le lien est rompu, PM moi et je vais le corriger).
j'espère que ça vous aidera...
31 décembre 2014 - modifier: Changement d'hôte à AFH. S'il vous plaît laissez-moi savoir si les liens sont rompus
Nov 21, 2013 - EDIT:
comme demandé par les utilisateurs, j'ai ajouté un emplacement par défaut de keystore et un bouton donner. N'hésitez pas à l'utiliser si je vous ai aidé. :)
les instructions actuellement dans Tutoriel Android de Facebook ne fonctionnent pas bien sous Windows . Leur exemple montre comment pipe la sortie keytool à openssl mais si vous essayez cela 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 le faire fonctionner correctement. Voici les étapes qui ont fonctionné pour moi:
commencer 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 avoir exécuté ces commandes, le hachage valide est stocké dans le fichier base64.txt. Copiez et collez ceci dans les paramètres de votre application sur Facebook.
C'est ce qui est donné à la page officielle de Facebook :
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Permettez-moi de briser cette commande en fragments.
-
chercher
"keytool.exe"
. Vous pouvez le chercher sur le lecteur C:. Vous pouvez le trouver dans"java jdk"
ou"java jre"
. Si vous avez installé plusieurs versions, choisissez l'une. -
ouvrez une invite CMD et allez au-dessus répertoire où vous avez trouvé
"keytool.exe"
.Clip le" exe` " et coller la commande ci-dessus fournie sur la page Facebook.
-
vous obtiendrez une erreur en entrant ceci Qu'OpenSSL n'est pas reconnu comme dans la commande de sortie d'entrée. Solution: télécharger " Openssl "de OpenSSL (si vous avez une machine 64 bits, vous devez télécharger openssl-0.9.8 e X64 ). Extrait et enregistrer n'importe où... Je l'ai enregistré sur le lecteur C: dans le dossier
OpenSSl
-
remplacer l'openssl dans la commande ci-dessus dans laquelle vous obteniez une erreur D'OpenSSL par "C:\OpenSSL\bin\openssl" aux deux endroits après la pipe,"/".
-
si on vous demande un mot de passe, entrez
android
.
Et vous obtiendrez votre clé de hachage. Pour de plus amples les étapes, se référer à nouveau à la Facebook page.
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, donc si vous exécutez dans le débogueur n'oubliez pas d'exécuter à nouveau dans le mode de libération .
pour obtenir le code hash de la clé Android, suivez ces étapes:
- télécharger OpenSSL pour Windows ici
- Maintenant décompresser sur le disque C
- ouvrir une invite CMD
- Type
cd C:\Program Files\Java\jdk1.6.0_26\bin
- tapez alors seulement
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
- fait
la solution la plus simple que j'ai trouvée est celle-ci:
- Ouvrir le Journal de Chat
- essayer et accéder à Facebook avec le SDK Android
-
cherchez 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 Hash clé Android de Facebook.
j'ai fait de cette façon pour Linux & du système d'exploitation Windows 151940920" :
Linux:
- Télécharger Openssl
- Ouvrir un terminal
-
keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64
veuillez changer nom D'Alias et Keystore avec son chemin comme votre exigence.
Terminal serait demander pour mot de passe de Keystore. Vous devez fournir le mot de passe pour le même Keystore .
ainsi finalement vous obtiendriez le libérer Hashkey .
Windows:
Étapes Libération Hashkey :
- Télécharger Openssl (Télécharger de ici ), Je l'ai téléchargé pour 64 bit OS, vous pouvez trouver plus ici
- extraire fichier zip téléchargé à C:\ drive seulement
- Ouvrez l'invite de commande
-
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 changer nom D'Alias et Keystore avec son chemin comme votre exigence.
Note:
veuillez mettre vos coordonnées là où j'ai marqué entre***.Terminal demande pour mot de passe de Keystore. Vous devez fournir le mot de passe pour le même Keystore .
ainsi finalement vous obtiendriez le libérer Hashkey .
fait
-
télécharger openSSL pour windows ici vous pouvez trouver 64bit et 32bit ici
-
extraire le fichier téléchargé
- créer nom de dossier openSSL dans le lecteur C
- copier tous les éléments extraits dans le dossier openSSL (bin, include,lib, openssl.cnf)
- android debug fichier de clés, localisation par
C:\Users\username\.android\debug.keystore
- maintenant obtenir votre invite de commande et coller ce code
keytool-exportcert-alias androiddebugkey-keystore C:\Users\username.android\debug.keystore | "C:\openSSL\bin\openssl" sha1-binaire | "C:\openSSL\bin\openssl" base64
- appuyez sur entrée et vous obtiendrez le code à 28 chiffres
vous avez besoin de créer un keystore par le clavier pour les applications signées pour android comme la procédure décrite dans site Android et puis vous devez installer cygwin et ensuite vous devez installer openssl à partir de code google puis il suffit d'exécuter la commande suivante et vous obtiendrez la clé de hachage pour android et puis mettre cette clé de hachage dans l'application facebook que vous avez créé. Et puis vous pouvez accéder à l'application facebook par L'intermédiaire de L'Android L'Application pour l'affichage de mur ("publish_stream") pourrait être un exemple.
$ keytool-exportcert-alias alias_name-keystore sample_keystore.keystore / openssl sha1-binaire / openssl base64
vous devez exécuter la commande ci-dessus à partir de cygwin.
Télécharger openSSL -> Installer -> il serait normalement installer dans C:\OpenSSL
puis ouvrir cmd et type
cd../../Program Files (Enter)
java (Enter)
dir (Enter)
cd jdk1.6.0_17 (varies with jdk versions) (Enter)
pour vérifier la version jdk, allez à C:/program fichiers / 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 le mot de passe qui est android.
-
il vous suffit d'ouvrir votre fichier D'activité principal et de créer ci-dessous la fonction de mention:
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 lancez votre Application, cela générera une clé de hachage pour votre application.
-
Maintenant, ouvrez le cat log et cherchez avec" KeyHash " et copiez la clé de hachage.
-
si vous générez la touche Hash, vous pouvez supprimer cette fonction.
1) Créer une clé pour signer votre application, et se souvenir de l'alias.
2) Installez OpenSSL.
3) Mettez le dossier bin D'OpenSSL dans votre chemin.
4) Suivez les étapes mentionnées sous "Setup Single Sign-On" sur le FB-Android-SDK page , et de générer votre clé de hachage. Assurez-vous de mettre le bon alias et keystore nom de fichier.
5) Créer une application sur Facebok, et sous L'onglet Appareils mobiles, entrez cette touche de hachage.
Documentation Officielle sur facebook site des développeurs :
@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) {
}
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
ça a marché pour moi ...
Suit:
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 Linux
Ouvrir Un Terminal :
Pour Debug Build
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
vous trouverez debug.keystore de ".android "copier le dossier à partir et coller sur le bureau et exécuter la commande ci-dessus
Pour la libération de la construction
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
NOTE: faut demander le mot de passe. S'il ne demande pas le mot de passe cela signifie que quelque chose ne va pas dans la commande.
pour une application Android
ce code est utilisé pour obtenir la clé de hachage dans votre application Android pour L'intégration Facebook. J'ai testé tous les appareils, et ça fonctionne. Ne changez que le nom de paquet 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) {
}
}
pour 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 vers votre keystore.
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 characher. Rappelez-vous que copier et coller cette clé de sortie Hash dans les paramètres Android de votre application Facebook.
image: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png
reportez-vous à partir de : https://developers.facebook.com/docs/android/getting-started#release-key-hash et http://note.taable.com
Comme répondu sur un problème similaire, j'ai trouvé ceci pour être de travailler pour moi:
- Copiez le fichier
apkname.apk
dont vous voulez connaître le hachage au ' Java\jdk1.7.0_79\bin 'folder - l'Exécution de cette commande
keytool -list -printcert -jarfile apkname.apk
- copiez la valeur
SHA1
et convertissez-la en utilisant ce site - utiliser la valeur de Keyhash convertie ( ex. zaHqo1xcaPv6CmvlWnJk3SaNRIQ= )
la solution la plus simple:
- Ne pas ajouter de la clé de hachage, de mettre en œuvre tout le reste
- 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. ..."
- ouvrir le tableau de bord de l'application facebook et ajouter le hash " xxx=" ("xxx" hash de l'erreur + " = "signe)
La meilleure approche est d'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 le HashKey pour L'application Facebook. Chaque fois, je devais jouer avec Openssl et Keytool ou utiliser un code pour obtenir le hash de la signature ...
donc j'ai écrit un simple clavier qui fera ce travail pour vous: - > clavier sur Google Play < -
Enjoy:)
j'ai fait une petite erreur qui doivent être gardés à l'esprit. Si vous utilisez votre keystore alors donner votre nom d'alias, pas androiddebugkey...
j'ai résolu mon problème. Maintenant, si Facebook est installé dans mon appareil, alors encore mon application reçoit des données sur L'intégration de 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 sur entrez - il vous demandera pour le mot de passe et ensuite entrer votre mot de passe keystore, pas Android.
Cool.
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());
}
}
});
}
}
tout d'abord, pour générer votre hachage de clés sur votre ordinateur local, exécutez l'utilitaire keytool de Java (qui devrait être sur le chemin de votre console) contre le débogueur keystore Android. C'est, par défaut, dans votre maison .android répertoire).
sur ubuntu, c'est woking dans mon ordinateur
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
pour les personnes qui ne savent pas coder, l'outil key gen d'AivarsDa sur google play i la solution la plus facile. juste obtenir la clé de hachage et en copie à l'facebook paramètres de l'application. Le partage sur l'outil keygen fait planter mon application sur mon téléphone, donc je l'ai tapé manuellement dans le bloc-notes et je l'ai copié sur fb. Enfin passé cette étape après des jours de frustration
utilisez cette commande après garder ouvert ssl 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
utilisez ceci pour imprimer le hachage de la clé en 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){
}