web-dev-qa-db-fra.com

Android Facebook SDK: générer le hachage de la clé de version

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

J'ai créé les clés 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 débogage, tout fonctionne bien. 

Lorsque j'exporte le projet pour publication, cela donne l'erreur suivante:

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

Je colle la clé imprimée dans le tableau de bord Facebook Developer, mais l'application me donne toujours cette erreur.

Le package complet de mon activité est "com.app.package.views" et j'ai essayé d'utiliser ce package (sous le nom Nom du package 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 hachage de clé de libération correct?

30
MikeKeepsOnShine

Vous avez suivi les étapes prévues par facebook pour la création d'une application de connexion?

Vous avez besoin d'un 'Production de clés' obtenue à partir de votre magasin de clés de publication:

De la ligne de commande:

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

Et ajoutez cette clé sur les options de la page de l'application facebook.

Plus d'informations: https://developers.facebook.com/docs/Android/getting-started/

44
Abhi

Je trouve une solution. pour Mac

Utilisez celui-ci pour obtenir YOUR_RELEASE_KEY_ALIAS:

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

et celui-ci pour obtenir votre release keyhash:

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

Ça marche pour moi. 

33
Rahim Rahimov

La solution la plus simple.

1) Signez votre Apk.

2) Connectez votre appareil à la machine et installez apk signé sur un appareil réel.

3) Lorsque vous vous connectez à Facebook, vous obtiendrez une erreur disant "Hache de clé invalide. Le hachage de clé" xxx "ne correspond à aucune clé enregistrée. ..." sur votre logcat.

4) Copiez la clé de hachage logcat et transmettez-la à developers.facebook.com/apps/104...../settings/

24
Bharat Hangarge

Nous devons remplacer le mot "openssl" par le chemin d'un fichier dans 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
Informatheus

// ajoute cette méthode à votre première activité et ouvre un journal et recherche une balise Base64 c'est la hashtkey i hoop it help 

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);
    }
}
3
eng mohamed emam

Le Kit de développement logiciel (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ée une fois que vous avez créé un package d’application signé. Voici un lien sur la création de clés de débogage et de libération.

Developer.Facebook

Consultez également this SO post. 

1
MajorGeek

Le moyen le plus simple d'obtenir la clé de hachage libérée est la suivante: Obtenez la clé SHA1 de la clé libérée à l'aide de la commande suivante:

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

Ensuite, vous obtiendrez la clé SHA1. Copiez cette clé et générez la clé de hachage en utilisant le site suivant:

Lien pour obtenir la clé de hachage

Vous obtiendrez Output (base64): copiez-le et utilisez-le où vous voulez.

0
Pratibha Sarode

Pour référence future, si vous avez déjà votre application sur le Play Store, vous pouvez: 

  1. Aller au Release Management 

  2. sélectionnez App Signing dans Release Management 

  3. Vous pouvez voir la clé SHA1 au format hexadécimal App signing certificate

  4. Copiez le SHA1 au format hexadécimal et convertissez-le au format base64, vous pouvez utiliser ceci link do sans la partie SHA1: de l'hexagone.

  5. Accédez à la console de développeur Facebook et ajoutez la clé (après conversion en base 64) dans le settings —> basic –> key hashes.

0
Nadhir Falta