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?

207
demandé sur Peter Mortensen 2010-12-08 18:08:53

28 réponses

Voici les étapes -

  1. 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)

  2. "
  3. L'extraire. créez un dossier - OpenSSL en C: / et copiez le code extrait ici.

  4. 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.

  5. 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

293
répondu Avi C 2012-07-14 10:04:45

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é;)

218
répondu Bassem Samy 2017-11-14 10:18:40

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é. :)

Screen shot Screen shot 2

127
répondu Shahar 2015-01-04 09:04:53

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.

58
répondu Bryan Bedard 2011-09-27 03:47:25

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.

  1. 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.

  2. 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.

  3. 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

  4. 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,"/".

  5. 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.

46
répondu DeltaCap 2014-08-16 20:19:42

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 .

28
répondu Ilya Gazman 2017-08-31 13:57:55

pour obtenir le code hash de la clé Android, suivez ces étapes:

  1. télécharger OpenSSL pour Windows ici
  2. Maintenant décompresser sur le disque C
  3. ouvrir une invite CMD
  4. Type cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. 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
  6. fait
23
répondu noelyahan 2014-08-16 20:21:36

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.

14
répondu Ron 2014-08-16 20:20:53

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

10
répondu Hiren Patel 2016-07-11 09:34:48
  • 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
9
répondu Ashana.Jackol 2016-09-27 07:18:58

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.

6
répondu hossaindoula 2011-06-26 08:37:28

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.

6
répondu Maniya Joe 2015-06-03 07:30:11
  1. 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.

  1. Maintenant, ouvrez le cat log et cherchez avec" KeyHash " et copiez la clé de hachage.

  2. si vous générez la touche Hash, vous pouvez supprimer cette fonction.

6
répondu mohit sharma 2016-02-18 05:31:00

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.



5
répondu Abhinav Manchanda 2010-12-14 13:22:23

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) {

    }
5
répondu Hardik Thaker 2013-03-28 10:17:57
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
4
répondu Pravin Mohol 2013-07-12 06:40:16

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.

4
répondu Biraj Zalavadia 2013-08-07 10:52:34

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) {

    }
}
3
répondu Ramkailash 2014-08-17 15:52:24

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

3
répondu HTML5 developer 2015-03-11 09:29:34

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= )
3
répondu Muhammad Omar ElShourbagy 2017-09-10 06:09:06

la solution la plus simple:

  1. Ne pas ajouter de la clé de hachage, de mettre en œuvre tout le reste
  2. 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. ..."
  3. ouvrir le tableau de bord de l'application facebook et ajouter le hash " xxx=" ("xxx" hash de l'erreur + " = "signe)
2
répondu Singed 2015-02-25 17:23:12

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:)

1
répondu AivarsDa 2014-07-21 08:51:19

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.

1
répondu Pravin Mohol 2014-08-16 20:29:07
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());
                }
            }
        });
    }



}
0
répondu Anil Bhatiya 2013-07-03 09:30:05

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
0
répondu Jamshid 2013-07-13 11:14:18

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

0
répondu Undra Bailey 2015-06-29 06:48:51

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
0
répondu SANJAY GUPTA 2016-03-03 07:58:29

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){

    }
0
répondu Prashant Jajal 2018-01-19 10:40:00