web-dev-qa-db-fra.com

Facebook Android Générer un hachage de clé

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?

116
Scott

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.

20
allthenutsandbolts

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.

277
Vijay Arora

RÉPONSE MIS À JOUR (Générer avec du code) Méthode plus simple:

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)

ANCIENNE RÉPONSE (Générer Keyhash en utilisant openssl)

  1. pour générer la signature dont vous avez besoin, openssl est installé sur votre ordinateur. Si vous n'avez pas un téléchargement openssl à partir d'ici
  2. Dans C:, créez le dossier openssl
  3. extraire le contenu du fichier zip openssl téléchargé dans le dossier openssl de C:drive
  4. ouvrir l'invite de commande
  5. passer à bin sur openssl c'est-à-dire C:\openssl\bin dans l'invite de commande
  6. lancez 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.

enter image description here

146
AnhSirk Dasarp

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.

14
tigerden

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

  1. Télécharger openssl-0.9.8e_X64
  2. Créer un dossier openssl dans le lecteur C
  3. Extraire les fichiers Zip dans le dossier openssl
  4. Démarrer -> Exécuter: cmd (appuyez sur Entrée)
  5. (appuyez sur) cd C:\Program Files\Java\jdk1.6.0_45\bin. Remarque: C:\Program Files\Java\jdk1.6.0_45\bin: le chemin du dossier jdk sur votre ordinateur.
  6. (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.

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

  8. Se connecter à Facebook. Accès à gérer les applications. Collez le hachage de clé dans votre application sur developers.facebook.com.

12
Anh Duy

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

9
Sakramento

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.

enter image description here

après avoir exécuté le fichier, votre sortie sera générée avec la clé sha1 requise.

enter image description here

Alors allez http://tomeko.net/online_tools/hex_to_base64.php

et collez votre clé sha1

enter image description here

et enfin vous obtiendrez Required HashKey.

8
Vicky Salunkhe

Si vous publiez, utilisez le fichier de clés avec lequel vous avez exporté votre application et non le fichier debug.keystore.

7
trgraglia

Enfin :)

Voici mon histoire:

  1. 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) {
    }
    
  2. Changez PROJECTNAME en votre nom de package!

  3. Signer votre application (Android Tools-> Export Signed Application)
  4. Dans votre activité principale où vous collez du code à partir de l'option 2, dans votre mise en page, créez TextView avec id textstring
  5. décommentez deux lignes, que votre code de signature serait réglé sur TextView 6 Wuolia, vous avez votre hachage, installez l'application sur votre téléphone !!! et vérifiez votre clé de hachage!
  6. Maintenant, quand il est visible, allez dans l'application facebook que vous avez créée et ajoutez-la à [Key Hash]
  7. Notez que le nom de votre paquet doit être identique à celui de facebook [Nom du paquet] sous [Clés de hachage]
  8. Bonne journée :)
6
Vasilij

Le mot de passe du certificat de débogage est Android et non Android.

6
Fernando Gallego

Une solution en ligne à générer pour facebook

keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
5
Anudeep Samaiya

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

4
Vijay Rajput

Générer la clé de hachage de débogage

  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;
    }

Générer la clé de hachage Release

 keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
3
Ashutosh Srivastava

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:

  1. Téléchargez openssl à partir du lien ci-dessous: https://code.google.com/p/openssl-for-windows/downloads/list
  2. Décompressez-le sur un lecteur local (par exemple, C:\openssl).
  3. 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.

  1. Il vous demandera un mot de passe, par exemple,

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

3
Mahbubul Syeed

Excellent article de blog sur le sujet

Extraction du hachage de clé à partir de la clé .p12

  1. Ouvrez un terminal ou une ligne de commande et accédez à l'emplacement de votre clé .p12.
  2. Tapez: “keytool -v -list -keystore mycert.p12 -storetype pkcs12 ″ où mycert.p12 est le nom du fichier de votre clé .p12.
  3. Entrez le mot de passe du magasin de clés (celui que vous avez utilisé lors de l'exportation de la clé .p12). 4 Copiez le texte de la signature d'empreinte digitale sha1.
  4. Les octets à la signature d'empreinte digitale sha1 sont nécessaires pour écrire le fichier "sha1.bin". Vous pouvez utiliser un éditeur hexadécimal pour coller les octets que vous avez copiés. Ensuite, enregistrez le fichier sous le nom "sha1.bin".
  5. Ouvrez à nouveau le terminal et tapez: “openssl base64 -in sha1.bin -out base64.txt”.
  6. Le fichier “base64.txt” résultant contiendra le hachage de clé nécessaire pour Facebook.

Grand et simple éditeur hexadécimal pour mac: HexFiend

OpenSSL devrait être préinstallé sur mac, et voici le lien pour la version Windows.

Lien

2
Thyselius

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
2
Sam Stern

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.

1
TacB0sS

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

1
Arpit Patel

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

    }
0
Prashant Jajal

La seule chose qui fonctionne pour moi est d'utiliser le mot de passe Android. Pourquoi n'est-ce pas mentionné dans les guides?

0
Remi Sture