SDK Facebook Android: générer le hachage des clés de publication

je construis une application dans laquelle les utilisateurs peuvent se connecter avec Facebook.

j'ai créé les touches de hachage comme suit:

try {
         PackageInfo info = getPackageManager().getPackageInfo(
         "com.app.package",
         PackageManager.GET_SIGNATURES);
         for (Signature signature : info.signatures) {
         MessageDigest md = MessageDigest.getInstance("SHA");
         md.update(signature.toByteArray());
         Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
         Base64.DEFAULT));
         Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
                 Base64.DEFAULT), Toast.LENGTH_LONG).show();
         }
         } catch (NameNotFoundException e) {

         } catch (NoSuchAlgorithmException e) {

         }

en mode debug, tout fonctionne bien.

quand j'exporte le projet pour publication, Il donne cette erreur:

"Invalid key hash. The key hash ****************** does not match any stored key hashes"

je colle la clé imprimée dans le tableau de bord du développeur Facebook, mais l'application me donne toujours cette erreur.

le le paquet complet de mon activity est " com.app.package.views " et j'ai essayé d'utiliser ce paquet (comme nom de paquet Google Play) dans le tableau de bord, mais rien n'a changé.

Comment puis-je le résoudre? Comment puis-je générer le bon hachage de la clé de publication?

29
demandé sur Irshu 2014-12-12 20:13:16

9 réponses

Vous avez suivi les étapes que facebook prévoit la création d'une application de connexion?

Vous avez besoin d'une Production keyhash " obtenu à partir de votre version du fichier de clés:

de comand line:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

et ajouter cette clé sur les options de page de l'application facebook.

plus d'informations: https://developers.facebook.com/docs/android/getting-started /

43
répondu Abhi 2017-04-18 13:12:45

je trouve une solution. pour MAC

utilisez celui-ci pour obtenir VOTRE_RELEASE_KEY_ALIAS:

keytool -list -keystore /Users/***/Documents/keystore/***.jks

et celui-ci pour obtenir votre sortie keyhash:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64

ça me va.

32
répondu Rahim Rahimov 2016-02-01 10:37:10

la solution la plus simple.

1) signez votre Apk.

2) Connectez votre appareil à la machine et installez signed apk sur l'appareil réel.

3) 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. ..."sur votre logcat.

4)Copiez la clé de hachage logcat et mettez cette clé developers.facebook.com/apps/104...../settings /

22
répondu Bharat Hangarge 2016-08-08 07:40:48

nous devons remplacer le mot" openssl " par le chemin d'un fichier à l'intérieur de la structure openssl.

donc, ma commande CMD est:

C:\Program Files\Java\jre1.8.0_45\bin>keytool -exportcert -alias Informatheus -keystore C:\Users\Atendimento\Dropbox\AndroidKeystore\Keystore | C:\Users\Atendimento\Desktop\openssl\bin\openssl sha1 -binary | C:\Users\Atendimento\Desktop\openssl\bin\openssl base64

ça a marché.

7
répondu Informatheus 2015-08-07 15:16:05

SDK Facebook utilise deux clés différentes, l'une est la clé de débogage que vous pouvez utiliser pendant votre phase de développement et l'autre est la clé de libération qui est utilisé une fois que vous créez un paquet d'application signé. Voici un lien sur la façon de créer des clés de débogage et de publication.

développeur.Facebook

consultez Également ce DONC post.

1
répondu MajorGeek 2017-05-23 10:31:12

// ajouter cette méthode pour votre première activité et ouvrir le journal et de recherche pour Base64 tag c'est le Hashkey je hoop il aide

public void getHashkey(){
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());

            Log.i("Base64", Base64.encodeToString(md.digest(),Base64.NO_WRAP));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.d("Name not found", e.getMessage(), e);

    } catch (NoSuchAlgorithmException e) {
        Log.d("Error", e.getMessage(), e);
    }
}
1
répondu eng mohamed emam 2017-10-03 08:31:11

celui-ci est le moyen le plus facile que j'ai trouvé jusqu'à présent pour générer du hash clé!

try
{
  PackageInfo info = getPackageManager().getPackageInfo(
      "Your 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) {

}
0
répondu Rahul 2018-07-11 12:27:38

le moyen le plus simple pour obtenir la clé de hachage libérée apk est : Obtenez la clé SHA1 d'apk libéré en utilisant la commande suivante:

keytool -list -v -keystore keystore_path.jks -alias keystoreAlias

Thn vous obtiendrez la clé SHA1. Copier cette clé et générer la clé de hachage en utilisant le site suivant:

lien pour obtenir la clé de hachage

vous obtiendrez la sortie (base64): copiez-la et utilisez où vous voulez..

0
répondu Pratibha Sarode 2018-07-31 10:43:56
keytool -exportcert -alias aliasName -keystore C:\my_release_keystroke_info.jks | openssl sha1 -binary | openssl base64
-1
répondu Nitin Anand 2016-07-04 05:24:23