web-dev-qa-db-fra.com

android facebook intégration hash clé invalide

bonjour à tous dans une de mes applications il me faut des données de fb ... je le fais .. 

J'ai créé ID de l'application il me connecte avec succès, mais après la déconnexion, je me connecte, puis il me donne 

screen-shot of invalid key hash error facebook

Quel est le problème que je fais? S'il vous plaît suggérez que j'utiliseFacebook sdk... J'ai installé Facebook sur mon téléphone ... cela fonctionne bien dans un émulateur qui n'a pas d'application Facebook intégrée 

c'est mon code

 if (FB_APP_ID == null) {
            Builder alertBuilder = new Builder(this);
            alertBuilder.setTitle("Warning");
            alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                    "specified before running this example: see App.Java");
            alertBuilder.create().show();
        }

        // Initialize the dispatcher
        Dispatcher dispatcher = new Dispatcher(this);
        dispatcher.addHandler("login", LoginHandler.class);
        dispatcher.addHandler("stream", StreamHandler.class);
        dispatcher.addHandler("logout", LogoutHandler.class);

        // If a session already exists, render the stream page
        // immediately. Otherwise, render the login page.
        Session session = Session.restore(this);
        if (session != null) {
            dispatcher.runHandler("stream");
        } else {
            dispatcher.runHandler("login");
        }
157
Android

La clé de hachage de génération est incorrecte. Vous pouvez obtenir la clé de hachage en deux étapes. On est par invite de commande. Un autre est à travers le codage. Clé de hachage via la commande Invite ne fonctionne que pour la première fois Je ne connais pas la raison. J'ai aussi le même problème. Donc, je l'ai essayé par programmation.

Suivez ces étapes:

Collez le code suivant dans oncreate().

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.packagename", 
                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) {

}

Modifiez "com.example.packagename" avec le nom de votre package dans le codage ci-dessus sans échec (vous pouvez trouver le nom de votre package dans le fichier Manifest Android).

Exécutez votre application. Accédez à l'activité où vous avez collé le code ci-dessus. Dans le logcat, recherchez "KeyHash". Vous pouvez trouver une clé de hachage. Copiez la clé de hachage et accédez à la page du tableau de bord de l'application Facebook. Accédez aux paramètres et entrez les détails comme dans l'image ci-dessous.

enter image description here

Une fois que vous avez terminé l'étape ci-dessus. Relancez l'application à nouveau, connectez-vous à facebook . Pour plus d'informations sur le hachage des clés, consultez le lien link

Si vous ajoutez une information erronée dans la page des paramètres, cela entraînera une erreur. utilisez donc les informations correctes ici. Et également si public (autre que vous) devez utiliser votre application, cela signifie que vous devez activer le droit(change "yes" in the "Status & Review" next to setting).

254

Si vous faites face à ce problème, insérez cette clé dans votre developer.facebook.com

 enter image description here

Assurez-vous ensuite que votre application est live sur 

developer.facebook.com

Ce cercle vert indique que l'application est en direct

 enter image description here

Si ce n'est pas le cas, suivez ces deux étapes pour rendre votre application active. 

Étape 1 Accédez à votre application -> paramétrage => et ajoutez un e-mail de contact et appliquez, cliquez sur Enregistrer les modifications.

Setp 2 Ensuite, allez à App Review et assurez-vous que cette bascule est Oui, j'ai ajouté une capture d'écran

 enter image description here

Remarque: Si vous souhaitez copier une dièse, cochez la case BlueServiceQueue dans Logcat.

106
Arpit Patel

Si vous utilisez la signature de l'application Google Play:

Ouvrez la section relative à la signature des applications dans la console Google Play et obtenez le certificat SHA1 de app, puis convertissez-le en base64, par exemple avec cet outil: http: //tomeko.net/online_tools/hex_to_base64.php?lang=fr

console screenshot

convert to base64 screenshot

106
Rafal Malek

J'ai eu le même problème.J'étais sûr que c'était dû à une très petite faute et oui c'était !!!! J'ai trouvé la solution.

Lors de la génération de la clédebughash sur mon ordinateur, j'ai saisi le mot de passe de mon système.Mais le mot de passe doit être le suivant -
Entrez le mot de passe du magasin de clés: "Android"
C’était le seul problème dans mon cas.

----- Pour générer le hashDebugkey, utilisez cette commande -

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

Entrez le mot de passe du magasin de clés: 'Android' 

----- Pour générerReleaseclé hash, utilisez cette commande -

keytool -exportcert -alias "alias du magasin de clés" -keystore "Votre chemin d'accès au magasin de clés lors de la signature de l'application" | openssl sha1 -binary | openssl base64

Indiquez le mot de passe de votre magasin de clés après l'exécution de cette commande.

68
Akash Bisariya

J'ai rencontré le même problème. J'ai fait une courte recherche sur les raisons possibles de ce comportement étrange et j'ai trouvé ce qui suit:

  • Lors de la première exécution d'une nouvelle application Facebook, il permettra la connexion/connexion même si vous ne spécifiez pas de hachage de clé.

  • Pour moi, le tutoriel fourni par Facebook n'a pas généré le hachage de clé correct, car il donnait la mauvaise configuration. Lors de l'exécution:

    keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.Android\debug.keystore | openssl sha1 -binary | openssl
    base64
    

assurez-vous de vérifier toutes les propriétés - la HOMEPATH, l'existence du magasin de clés, etc. Vous devrez peut-être aussi fournir un mot de passe.

  • Ce qui a généré la configuration appropriée était la solution suggérée par @Mahendran.

  • De plus, si vous voyez l'erreur initialement publiée ( http://i.stack.imgur.com/58q3v.png ), il est fort probable que le hash de la touche que vous voyez à l'écran soit votre vrai. Si rien d'autre ne fonctionne, essayez de le saisir dans Facebook.

J'ai tous ces résultats avec: Windows 7 édition 64 bits, Android Studio 1.2.2, JDK 7.

19
Martin Doychev

Selon Facebook Login for Android , vous devez fournir la valeur Key Hash. Pour l'obtenir, vous aurez besoin de la clé utilisée pour signer votre application.

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64
12
JP Ventura

J'ai essayé tout ce qui est décrit ci-dessus et rien ne m'a aidé dans mon cas avec mes clients! Mon client ne se souvenait pas qu'il avait installé l'application Facebook sur son appareil . été changé et j’ai remplacé les anciennes clés de hachage de la console Facebook Developers Console par la clé provenant de l’erreur (comme suggéré ci-dessus) et cela fonctionne! appareil avec l'application Facebook installée et sur un appareil avec l'application Facebook non installée et gérez les deux cas ..

7
Matan Dahan

Vous devez créer deux hachages de clé, un pour le débogage et un pour la libération.

Pour le hachage de la clé Debug:

Sous OS X, lancez:

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

Sous Windows, lancez:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.Android\debug.keystore | openssl sha1 -binary | openssl
base64

La clé de débogage source de hachage

Pour le hachage de la clé Release:

Sous OS X, exécutez: (Remplacez entre <> par vos valeurs)

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

Sous Windows, utilisez: (Remplacez quoi entre <> par vos valeurs)

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

Libère la clé de hachage source

6
MBH

J'avais le même problème. Première connexion, très bien, mais hachage de clé non valide.

Même si ce n'est pas un fil d'Unity, j'ai trouvé ma réponse ici. Je vais donc laisser ma réponse, juste au cas où quelqu'un d'autre (égaré comme moi) tomberait dessus.

Le Kit de développement logiciel (SDK) Facebook pour Unity utilise un hachage de clé incorrect. Il obtient la clé de "C:\Utilisateurs \" votre utilisateur ".Android\debug.keystore" et, dans un monde parfait, il devrait l'obtenir du magasin de clés que vous avez créé dans votre projet. C'est pourquoi il vous dit que la clé de hachage n'est pas enregistrée.

Comme suggéré par Madi _, vous pouvez suivre les étapes décrites sur ce lien pour trouver la bonne clé. Il suffit de les pointer correctement sur le magasin de clés de votre projet, sinon vous n'obtiendrez pas la bonne clé.

Après de longues recherches, nous avons trouvé une solution.

Nous avions défini les autorisations comme:

loginButton.setReadPermissions (email public_profile);

Cela a fonctionné pour la première fois, mais lorsque nous nous sommes reconnectés au FB, l'erreur de hachage non valide s'est produite.

La solution simple était de changer la ligne ci-dessus en:

    loginButton.setReadPermissions(Arrays.asList(
            "public_profile", "email"));

Et cela a fonctionné comme un bonheur!

Espérons que cela aide quelqu'un.

Facebook devrait renvoyer l'exception correcte au lieu de l'erreur erronée de clé de hachage invalide et trompeuse.

2
user3663906

Ce code vous donnera votre hash pour facebook mais vous devez suivre ces étapes afin d’obtenir la release condidate hash . 1. copier et coller ce code dans votre activité principale

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.packagename", 
                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) {

}
  1. générer apk signé.
  2. connectez votre téléphone à un ordinateur portable et assurez-vous qu'il reste connecté.
  3. installez et exécutez l'apk sur votre téléphone en déplaçant manuellement l'apk de version sur votre téléphone.

  4. maintenant, regardez Android logcat (utilisez le filtre KeyHash:), vous devriez voir votre clé de hachage de publication pour Facebook. copiez-le simplement et collez-le dans votre https://developers.facebook.com/apps c'est sous paramètres.

  5. maintenant, vous pouvez tester l'application, elle devrait parfaitement fonctionner.

    bonne chance. 

2
abdul jalil

collez le code suivant dans votre méthode OnCreate 

try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.example.packagename", 
            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) {
  e.printStackTrace();

} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

Modifiez simplement le nom du paquet. Ensuite, allez à votre chat Log et sélectionnez Recherche de débogage ici, puis vous trouverez la clé de hachage. Maintenant, copiez cette clé de hachage, puis accédez au site developer.facebook.app_id, éditez votre clé de hachage, puis appuyez sur Enregistrer. Maintenant, relancez votre projet Android, je pense que le problème sera résolu.

1
pavel_coder

Après tant d'essais, je suis tombé sur une solution à ce problème. J'ai généré et ajouté des clés de débogage et de libération à la console de développeur Facebook et j'obtiens toujours l'erreur.

La seule solution qui a fonctionné pour moi est de désinstaller le programme OpenSSL de Google et de le télécharger à partir de http://slproweb.com/products/Win32OpenSSL.html

Ça marche vraiment comme par magie

1
Uchenna Nnodim

Si vous saisissez le keyhash manuellement (par exemple, de Mobile au tableau de bord Facebook), veillez à distinguer le petit L du majuscule I.

1
Kashif Nazar

J'ai eu le même problème lorsque je déboguais mon application. J'ai réécrit le hachage que vous avez rayé dans l'image jointe (celle que Facebook dit invalide) et je l'ai ajouté dans la console des développeurs de Facebook aux hachages clés. Faites juste attention aux fautes de frappe. 

Cette solution s'apparente plus à une solution de contournement facile qu'à une solution appropriée.

1
Piotr Sagalara

Cela peut aider quelqu'un avec le même problème 

  1. Générer une clé de hachage en utilisant le code ci-dessous 

keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64

comment utiliser keytool

2. Collez-le dans le champ obligatoire dans développeur facebook

3.Dans Android studio Fichier-> Structure du projet  enter image description here

ajouter des paramètres de signature

4.Sélectionnez les saveurs  enter image description here

sélectionnez la configuration de signature que nous avons créée

5.sélectionnez le type de construction  enter image description here

6.sélectionnez build et construisez-le

 enter image description here

1
CLIFFORD P Y

Avait le même problème ..___. Assurez-vous que vous construisez l'APK avec le même appareil qui génère la clé de hachage qui est stockée dans la section développeurs de Facebook.

0
genericname

J'ai corrigé cela en ajoutant ce qui suit dans MainApplication.onCreate:

      try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.genolingo.genolingo",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                KeyHash.addKeyHash(hash);
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("PackageInfoError:", "NameNotFoundException");
        } catch (NoSuchAlgorithmException e) {
            Log.e("PackageInfoError:", "NoSuchAlgorithmException");
        }

Je l'ai ensuite téléchargée sur la console de développeur Google, puis le fichier dérivé APK qui, pour une raison quelconque, a un hachage de clé totalement différent.

J'ai ensuite utilisé logcat pour déterminer le nouveau hachage de la clé et l'a ajouté à Facebook, comme d'autres utilisateurs l'ont souligné.

0
Michael

Ce que facebook utilisé n'est ni le mot de passe par défaut ni l'alias de débogage. Vous devez le changer et cela fonctionnera.

/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64

Si vous n'avez rien changé avec le mot de passe par défaut, il devrait s'agir d'Android . Vous pouvez également le configurer dans le fichier build.gradle. Mais le même mot de passe alias doit être utilisé pour générer du hachage.

Android{
    signingConfigs {
        release {
            storeFile file("~/.Android/debug.keystore")
            storePassword "Android"
            keyAlias "androiddebugkey"
            keyPassword "Android"
        }
    }
}
0
abhi shukla
try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "www.icognix.infomedia",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("YourKeyHash :", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
0
ZafarHussain

Les gars ici sont beaucoup de bonnes réponses. Juste une chose. Collez le hachage reçu dans Application -> Paramètres -> Principal pas via le didacticiel de démarrage rapide.

0
Chuck

Cela a fonctionné pour moi.

Copiez le fichier APK sur votre PC dans le dossier Program Files\Java\jdkX.X.X_XXX\bin

Dans mon cas c'est C:\Program Files\Java\jdk1.8.0_191\bin

Ouvrez CMD dans ce répertoire et tapez ce qui suit

keytool -list -printcert -jarfile YOUR_APK_NAME.apk

Copiez la valeur SHA1 dans votre presse-papiers Il ressemblera à ceci: 79:D0:E6:80:4E:28:1E:D1:88:28:CB:D7:E6:BE:2E:0C:FB:24:98:52

Ensuite, allez à http://tomeko.net/online_tools/hex_to_base64.php pour convertir votre valeur SHA1 en base64.

C’est ce dont Facebook a besoin. Obtenez le hachage généré "********************* =" et copiez-le avec les paramètres de votre application de développeurs Facebook.

0
Muhammad Ovi