Intégration Facebook Android avec hachage de clé invalide

194

Dans l'une de mes applications, j'ai besoin d'obtenir des données de Facebook ... Je fais cela:

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

Capture d'écran de l'erreur de hachage de clé invalide Facebook

Qu'est-ce que je fais mal? J'utilise le SDK Facebook ... J'ai installé Facebook sur mon téléphone ... Il fonctionne bien dans un émulateur, mais l'application Facebook intégrée n'est pas installée.

Voici 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");
}
Android
la source
12
mais il fonctionne bien pour la première fois, il ne fonctionne pas si je me connecte après la déconnexion
Android
1
oui j'ai .. créé en utilisant try {PackageInfo info = getPackageManager (). getPackageInfo ("com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); pour (Signature signature: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android
1
J'ai adoré ce problème ici! Ici compris cool! [ Stackoverflow.com/questions/5306009/… ] [1]
Madi
3
@Android Même si c'est vieux, mais je dois le mentionner. Cela ne se produit pas lorsqu'un utilisateur se déconnecte puis se connecte. Cela se produit lorsque vous déboguez la deuxième fois, c'est-à-dire que vous réinstallez l'application pendant le débogage. Ainsi, le hachage change. Cela ne se produit pas en cas d'application signée (prête pour la production)
Nilay Vishwakarma
1
Obtenez-vous la même erreur si vous désinstallez l'application Facebook? J'ai testé à partir de deux téléphones et cette erreur ne se produit que lorsque l'application Facebook est installée.
Jaime Montoya

Réponses:

274

La clé de hachage générée est incorrecte. Vous pouvez obtenir la clé de hachage en deux étapes.

L'une se fait via une invite de commande. Un autre est le codage. La clé de hachage via une invite de commande fonctionne uniquement la première fois. Je ne connais pas la raison. J'ai également eu le même problème. Je l'ai donc essayé par programme.

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 sans faute "com.example.packagename" avec votre nom de package dans le codage ci-dessus (vous pouvez trouver votre nom de package dans le fichier manifeste Android).

Exécutez votre application. Accédez à l'activité où vous avez collé le code ci-dessus. Dans le fichier LogCat, recherchez "KeyHash". Vous pouvez trouver un hachage de clé. Copiez le hachage de clé 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.

Entrez la description de l'image ici

Une fois que vous avez terminé l'étape ci-dessus, relancez à nouveau l'application. Vous pouvez maintenant vous connecter à Facebook. Pour plus de détails sur le hachage de clé, consultez le lien .

Si vous ajoutez des informations erronées dans la page des paramètres, cela signifie que cela donnera une erreur. Utilisez donc les informations correctes. Et aussi si le public (autre que vous) doit utiliser votre application, cela signifie que vous devez activer l'autorisation (changez «oui» dans «État et révision» à côté du paramètre) .

Mahendran Sakkarai
la source
20
De cette façon, vous avez probablement obtenu un hachage de clé pour le magasin de clés de débogage. Cela fonctionne pour vous en mode développement, pas nécessaire pour votre mode de production. Au moins, cela ne fonctionne pas pour mon application de production.
Liangjun
3
merci vous m'avez fait gagner beaucoup de temps ... le doc officiel de facebook ne devrait pas lire c'est des conneries
DjP
Merci beaucoup mec!
KinGPinG
Hé par ce code PackageInfo info = getPackageManager (). GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATURES); pour (Signature signature: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); une clé de hachage différente est envoyée tandis que lorsque j'ai exécuté la commande en cmd sur Windows, ma clé de hachage était différente et je l'ai ajoutée dans FB mais le journal montre toujours le hachage du code de programmation
Sagar Devanga
1
Cela m'a fait gagner beaucoup de temps. Toujours le meilleur. Vérifiez le verbeux pour le keyhash et copiez et collez-le dans la page des développeurs facebook. Ne faites pas l'erreur de le taper manuellement! Comprenez également que keyhash change à chaque fois que vous désinstallez et installez l'application.
sanjeev
188

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

Ouvrez la section de signature d'application dans la console Google Play et obtenez le hachage SHA-1 sous Certificat de signature d'application . Puis convertissez-le en Base64 , par exemple avec cet outil: Hexadécimal -> décodeur de chaîne base64

Capture d'écran de la console

Convertir en capture d'écran Base64

Rafal Malek
la source
14
Monsieur! tu es un sauveur! Gros bisous. J'utilisais la signature de Play Store alors que j'avais placé les hachages de mes clés de version locales dans la console de Facebook.
Taha Rushain
4
Vous me sauvez la vie, j'utilise React, personne n'a mentionné la signature de l'application Play Store
TomSawyer
7
Je vous remercie! Ça marche! Vous pouvez également utiliser la commande de terminal pour cela: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Yuriy Seredyuk
4
C'est ce qui doit être fait pour l'environnement de production !!! Pouces vers le haut!
Bikey
Exactement ce que je voulais savoir. Les changements Hashkey dans le débogage chaque fois que vous désinstallez et installez l'application.Pour l'apk signé, ce sera la meilleure solution! Vous ppl rendre la vie plus facile grâce!
sanjeev
123

Si vous êtes confronté à ce problème, mettez cette clé dans votre developer.facebook.com :

Entrez la description de l'image ici

Assurez-vous ensuite que votre application est en ligne sur developer.facebook.com .

Ce cercle vert indique que l'application est en direct:

Entrez la description de l'image ici

Si ce n'est pas le cas, suivez ces deux étapes pour faire vivre votre application:

Étape 1 Accédez à votre application → paramètreajoutez l'e - mail de contact et appliquez Enregistrer les modifications.

Étape 2 Accédez à l' option Revue d'application et assurez-vous que cette bascule est Oui . J'ai ajouté une capture d'écran:

Entrez la description de l'image ici

Remarque: Si vous souhaitez copier la clé de hachage, vérifiez la BlueServiceQueue dans LogCat .

Arpit Patel
la source
5
Existe-t-il un moyen simple de copier ce hachage à partir du téléphone?
Daniel Shatz
4
@DanielShatz, il apparaît dans logcat. Je ne l'ai découvert qu'après l'avoir copié lettre par lettre.
Alaa M.
4
@DanielShatz Rechercher une balise BlueServiceQueuedans logcat
Alaa M.
4
Cette réponse a fonctionné pour moi. Après quelques tentatives de saisie manuelle du hachage, cela m'a donné la même erreur, le problème était que j'ai tapé majuscule i "I" au lieu de minuscule L "l". Cela m'a pris un peu de temps pour réaliser cela.
Markus
1
Cela fonctionne, mais je me demande d'où FB obtient cette clé de hachage? Personne ne se demande? L'erreur affichait la bonne clé de hachage, mais même avec toutes les commandes, ou obtenir sha1 à base64 à partir de la signature de l'application Google m'a donné la clé que FB a montrée dans l'erreur ... Merci pour l'astuce de toute façon
Umar3x
82

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

J'ai trouvé la solution:

Lors de la génération de la clé de hachage de débogage sur mon ordinateur, j'ai entré 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 un hachage de clé de débogage , 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érer le hachage de la touche Release , utilisez cette commande -

keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64

Fournissez votre mot de passe de fichier de clés après avoir exécuté cette commande.

Akash Bisariya
la source
5
en utilisant "android" comme mot de passe fonctionne pour moi. c'est déroutant.
adbie
3
utilisez cet "android" comme mot de passe lors de la génération de la clé de hachage.
Akash Bisariya
2
sur la machine Windows, assurez-vous que la variable de chemin est correctement définie pour les dossiers openssl \ bin et java .. \ bin. Définissez également la variable HOMEPATH pour pouvoir utiliser les commandes de Facebook.
KawaiKx
1
Au moins sur mac, j'ai dû installer le JDK Java pour que cela fonctionne. Sinon, la commande de débogage ci-dessus génère toujours un hachage, mais le hachage ne fonctionne pas et vous ne serez pas invité à entrer un mot de passe. Avec JDK installé, cela a fonctionné comme un charme.
lejonl
1
cette réponse devrait être la bonne réponse
Evan Ngo
20

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, elle permettra la connexion / connexion même si vous ne spécifiez aucun 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 fichier de clés, etc. Peut-être que vous devez également fournir un mot de passe.

  • Ce qui a généré la bonne configuration est la solution proposée par @Mahendran .

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

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

Martin Doychev
la source
2
version linux: `keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1 -binaire | openssl base64`
ruX
1
Entrez simplement ce qui est affiché par Facebook sur l'écran de l'appareil, cela devrait fonctionner. Merci pour la note @Martin
ralphgabb
14

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

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64
JP Ventura
la source
1
je veux juste ajouter un commentaire, utilisez votre magasin de clés de production.
Liangjun
2
@Liangjun En fait, vous devriez utiliser toutes vos clés car sinon vous ne pourrez pas tester Facbeook Login dans un environnement de débogage.
Pijusn
2
@Pius, oui, j'utilise en fait les deux touches. J'aurais dû le dire clairement.
Liangjun
J'obtiens une erreur pour cette commande (aucun runtime Java présent, demande d'installation.) Mais j'obtiens toujours une clé aussi, mais elle n'est pas valide et je copie simplement colle celle de logcat qui me dit qu'elle n'est pas reconnue.
Cristi Băluță
8

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

Pour le hachage de clé de débogage :

Sous OS X, exécutez:

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

Sous Windows, exécutez:

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

Déboguer la source de hachage de clé

Pour le hachage de la touche Release :

Sous OS X, exécutez (remplacez ce qui est entre <>par vos valeurs) :

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

Sous Windows, utilisez (remplacez ce qui est entre <>par vos valeurs) :

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

Libérer la source de hachage des touches

MBH
la source
J'obtiens une erreur pour cette commande (pas d'exécution Java présente, demandant l'installation.) Mais j'obtiens toujours une clé aussi, mais elle n'est pas valide et pour le faire fonctionner, je copie simplement collez celle de logcat
Cristi Băluță
Peut-être que vous n'avez pas défini le CHEMIN de votre java et keytool dans la ligne de commande? @ CristiBăluță
MBH
7

J'ai essayé toutes les réponses précédentes et rien n'a aidé mon cas avec mes clients!

Ensuite, mon client s'est souvenu qu'il avait installé l'application Facebook sur son appareil. Après l'avoir retiré. la connexion a parfaitement fonctionné.

La clé de hachage a été modifiée et j'ai remplacé les anciennes clés de hachage de Facebook Developers Console par la clé de l'erreur (comme suggéré ci-dessus), et cela fonctionne!

L'application Facebook elle-même pourrait être le problème, il vaut donc mieux le comprendre sur un appareil avec l'application Facebook installée et sur un appareil avec l'application Facebook non installée et gérer les deux cas ...

Matan Dahan
la source
Oui, même ici, j'ai eu cette erreur après avoir installé l'application facebook sur l'appareil. Donc, actuellement, je mets 2 clés de hachage sur les paramètres de développement Facebook.
stuckedoverflow
3
J'ai une situation très similaire à la vôtre. La chose qui m'a aidé est d'aller sur votre page FB - Paramètres - Applications - Supprimer l'application de la liste. Modifiez la clé de hachage et réinstallez l'application fb et votre application. Et maintenant ça marche ...
anna_manzhula
4

Voici comment j'ai résolu ce problème:

Vous devez d'abord obtenir la valeur SHA-1. Pour cela, il existe deux façons.

Pour obtenir la valeur SHA-1 dans Android Studio.

  1. Cliquez sur Gradle
  2. Cliquez sur Rapport de signature
  3. Copiez la valeur SHA-1

OU

Pour obtenir la valeur SHA-1 à partir du fichier de clés .

keytool -list -v -keystore keystore_file_name.jks -alias key0

Copiez la valeur SHA-1 dans votre presse-papiers comme ceci:

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

Et ouvrez Hexadecimal -> Base64 string decoder pour convertir votre valeur SHA-1 en Base64.

C'est ce dont Facebook a besoin.

Obtenez le hachage généré "******************** =" et copiez le hachage de clé dans l'application Facebook.

Sajid Zeb
la source
3

J'avais le même problème. Connectez-vous d'abord, très bien, mais ensuite, un hachage de clé non valide.

Le SDK Facebook pour Unity obtient le hachage de clé incorrect. Il obtient la clé de "C: \ Users \" 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 indique que le hachage de clé n'est pas enregistré.

Comme suggéré par Madi , vous pouvez suivre les étapes de ce lien pour trouver la bonne clé. Assurez-vous simplement de les pointer vers le magasin de clés à l'intérieur de votre projet. Sinon, vous n'obtiendrez pas la bonne clé.

Jefferson Suzuki Bitencourt
la source
3

Le code suivant vous donnera votre hachage pour Facebook, mais vous devez suivre ces étapes afin d'obtenir le hachage candidat à la sortie.

  1. Copiez et collez 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) {
    }
  2. Générez un fichier APK signé .

  3. Connectez votre téléphone à un ordinateur portable et assurez-vous qu'il reste connecté.
  4. Installez et exécutez le fichier APK sur votre téléphone en déplaçant manuellement la version APK sur votre téléphone.
  5. Regardez maintenant Android LogCat (utilisez le filtre KeyHash:) . Vous devriez voir votre clé de hachage de libération pour Facebook. Copiez-le et collez-le simplement dans votre https://developers.facebook.com/apps. C'est sous les paramètres.
  6. Vous pouvez maintenant tester l'application, elle devrait parfaitement fonctionner.
abdul jalil
la source
notez que le code ne fonctionne que si vous générez un apk signé. sinon cela ne vous donnera que le débogage du hachage apk qui est inutile pour l'
apk
Salut, lorsque j'ai donné une clé de hachage générée à l'application Facebook, cela fonctionne bien, mais lorsque j'essaie d'exécuter sur un autre appareil, il affiche à nouveau `` INVALID HASH KEY '', comment puis-je définir la clé de hachage pour le livre de visage contenir pour le travail sur tous les appareils.
Deepak
2

Après une longue recherche, nous avons trouvé une solution.

Nous avions défini des autorisations comme:

loginButton.setReadPermissions(public_profile email);

Cela a fonctionné pour la première fois, mais lorsque nous nous sommes reconnectés à Facebook, cela a donné l' erreur de hachage non valide .

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!

Facebook doit renvoyer l'exception correcte au lieu de l'erreur de clé de hachage invalide trompeuse.

user3663906
la source
J'ai le même problème J'ai essayé votre solution mais je ne parviens toujours pas à résoudre mon problème @ user3663906
BekaKK
2

Après tant d'épreuves, je suis tombé sur une solution à cela. J'ai généré et ajouté des clés de débogage et de libération à la console des développeurs Facebook et j'ai toujours eu l'erreur.

La seule solution qui a fonctionné pour moi a été de désinstaller le programme OpenSSL de Google et de le télécharger depuis Win32 / Win64 OpenSSL Installer pour Windows

Cela fonctionne vraiment comme par magie.

Uchenna Nnodim
la source
2

Même si cette question a été répondue de nombreuses façons utiles, je voulais juste ajouter que lorsque j'ai suivi la réponse de Rafal Maleks (en utilisant les touches de hachage sur la console Google Play), je n'ai pas pu utiliser la clé SHA1 de signature d'application, j'ai quand même obtenu le générique erreur de Facebook. Au lieu de cela, j'avais besoin d'utiliser l'empreinte digitale du certificat SHA-1 de la partie Télécharger le certificat (juste en dessous de la partie Signature de l'application sur la console Google Play). Même processus sinon;

  1. Copiez l'empreinte du certificat SHA-1 à partir de la section Télécharger un certificat dans la console Google Play

  2. Convertissez le SHA-1 en utilisant: http://tomeko.net/online_tools/hex_to_base64.php et copiez la sortie (base64)

  3. Collez-le dans l'entrée Key Hashes sur developer.facebook.com et enregistrez les modifications.

Espérons que cette réponse ne soit pas redondante et aidera quelqu'un qui ne peut pas le faire fonctionner avec le certificat de signature d'application.

Maintenant, la connexion Facebook fonctionne dans mon application en mode débogage et en version.

Ferenziz
la source
1

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 package. Accédez ensuite à votre fichier LogCat et sélectionnez Recherche de débogage ici. Ensuite, vous trouverez la clé de hachage. Copiez maintenant cette clé de hachage, puis accédez au site developer.facebook.app_id, modifiez votre clé de hachage et appuyez sur Save. Exécutez à nouveau votre projet Android. Je pense que le problème sera résolu.

pavel_coder
la source
7
répétant l'autre gars
Beto Caldas
1

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

  1. Générez le hachage de clé 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 requis dans le développeur Facebook

  3. Dans Android Studio, menu FichierStructure du projet

    Entrez la description de l'image ici

    Ajoutez des paramètres de signature.

  4. Sélectionnez les saveurs

    Entrez la description de l'image ici

    Sélectionnez la configuration de signature que nous avons créée.

  5. Sélectionnez le type de construction

    Entrez la description de l'image ici

  6. Sélectionnez la variante de construction et construisez-la

    Entrez la description de l'image ici

CLIFFORD PY
la source
1

J'ai eu le même problème lorsque je déboguais mon application. J'ai réécrit le hachage que vous avez barré dans l'image jointe (celle qui, selon Facebook, n'est pas valide) et l'ai ajoutée dans la console des développeurs de Facebook pour hacher les clés. Faites juste attention aux fautes de frappe.

Cette solution ressemble plus à une solution de contournement simple qu'à une solution appropriée.

Piotr Sagalara
la source
1

Si vous tapez manuellement le clavier (par exemple du mobile vers le tableau de bord Facebook), assurez-vous de faire la différence entre le petit L et le grand I.

Kashif Nazar
la source
1
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) {
}
ZafarHussain
la source
0

Ce que Facebook a utilisé n'est pas le mot de passe et l'alias par défaut pour le débogage. Vous devez le changer après 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 être "android" .

Vous pouvez également le configurer dans le fichier build.gradle. Mais le même mot de passe d'alias doit être utilisé pour générer le hachage:

android {
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}
abhi shukla
la source
0

Voici beaucoup de bonnes réponses. Juste une chose:

Collez le hachage reçu dans ApplicationParamètresPrincipal , pas via le didacticiel de démarrage rapide.

Mandrin
la source
0

J'ai eu le même problème.

Assurez-vous de créer le fichier APK avec le même appareil qui a généré la clé de hachage qui est stockée dans la section des développeurs Facebook.

nom générique
la source
0

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

J'ai ensuite téléchargé ceci sur la console développeur de Google, puis téléchargé le 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 clé et l'ai ajouté Facebook comme d'autres utilisateurs l'ont souligné.

Michael
la source
0

Si vous générez des hachages de libération, assurez-vous de saisir le mot de passe réel de votre keystore et non "android".

C'était mon problème. La version de débogage fonctionnait, mais pas la version APK.

Sermilion
la source
-1

Utilisez le code ci-dessous dans la méthode onCreate () de votre activité:

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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}

Exécutez ce code. Cela générera la clé de hachage. Copiez ce KeyHash dans le paramètre d'application Facebook et enregistrez les modifications. Connectez-vous ensuite à votre application. Cela fonctionnera parfaitement à l'avenir également.

Ashutoshg
la source
3
répéter l'autre gars
Beto Caldas