intégration Facebook d'android

Bonjour tout le monde dans un de mes app j'ai besoin d'obtenir des données de fb... Je suis en train de faire..

j'ai créé app ID il se connecte avec succès mais après la déconnexion je me connecte alors il me donne

screen-shot of invalid key hash error facebook

Qu'est-ce que je fais de mal? S'il vous plaît suggérer que j'utilise "Facebook sdk ... J'ai installé Facebook dans mon téléphone... ce bon fonctionnement dans émulateur qui n'a pas d'application Facebook intégrée installé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");
        }
146
demandé sur Akeshwar Jha 2014-05-15 13:22:09

18 réponses

la clé generate hash est erronée. Vous pouvez obtenir la clé de hachage en deux étapes. On est par le biais de l'invite de commande. Un autre est par le biais de codage. La touche de hachage par l'intermédiaire de l'invite de commande ne fonctionne que pour la première fois. Je ne sais pas la raison. J'ai également eu le même problème. Alors j'ai essayé par le biais d'un programme.

suivez ces étapes:

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

}

modifier " com.exemple.packagename" avec votre nom de paquet dans le codage ci-dessus sans faute(vous pouvez trouver votre nom de paquet dans le fichier manifeste Android).

lancez votre application. Allez à l'activité où vous avez collé le code ci-dessus. Dans la recherche logcat pour "KeyHash". Vous pouvez trouvé une clé de hachage. Copiez le hachage de la clé et allez à la page du tableau de bord de L'application Facebook. Allez dans Paramètres et entrez les détails comme dans l'image ci-dessous.

enter image description here

une fois que vous fini l'étape ci-dessus. Vous pouvez maintenant vous connecter sur facebook. Pour plus de détails sur le hachage de clé, consultez le lien

si vous ajoutez une mauvaise information dans la page des paramètres signifie qu'il donnera une erreur. donc, utiliser l'information correcte. Et aussi, si le public(autre que vous) devez utiliser votre application, vous devez activer l'autorisation (change "yes" in the "Status & Review" next to setting) .

239
répondu Mahendran Sakkarai 2017-05-23 12:18:23

si vous faites face à ce problème, alors mettez cette clé dans votre developer.facebook.com

enter image description here

, Puis assurez-vous que votre application est live sur

developer.facebook.com

ce cercle vert indique que l'application est en direct

enter image description here

s'il n'est pas alors suivre ces deux étapes pour faire de votre application live

Étape 1 allez à votre application - > paramètres = > et ajouter courriel de Contact et appliquer enregistrer les changements

Setp 2 puis goto App Review option et assurez-vous que cette bascule est oui j'ai ajouté un capture d'écran

enter image description here

Note: si vous voulez copier le hashkey, vérifiez le BlueServiceQueue dans Logcat.

93
répondu Arpit Patel 2017-10-23 15:09:13

si vous utilisez Google Play app Signing:

Open App signing section in Google Play Console , et obtenir SHA1 de app signing certificate , que de le convertir en base64 , par exemple avec cet outil: http://tomeko.net/online_tools/hex_to_base64.php?lang=en

console screenshot

convert to base64 screenshot

71
répondu Rafal Malek 2018-01-24 08:05:01

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

lors de la génération de "debug clé de hachage dans mon ordinateur, j'ai entré le mot de passe de mon système.Mais le mot de passe doit être le suivant -

Entrer le mot de passe de keystore: "android "

C'était le seul problème dans mon cas.

----- Pour générer déboguer clé de hachage, utilisez cette commande -

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

entrez le mot de passe de keystore: 'android'

----- Pour Générer des Libération clé de hachage, utilisez cette commande -

keytool -exportcert -alias alias du fichier de stockage des clés" -keystore "Votre chemin d'accès au fichier lors de la signature de l'app" | openssl sha1 -binaire | openssl base64

Donnez votre mot de passe après avoir exécuté cette commande.

59
répondu Akash Bisariya 2018-08-30 11:37:20

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

  • 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 touches de hachage.

  • pour moi, le tutoriel que Facebook a fourni N'a pas généré le bon hachage de touche, parce qu'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-le HOMEPATH , l'existence du keystore, etc. Peut-être que vous devez aussi fournir un mot de passe.

  • c'est la solution suggérée par @Mahendran qui a généré la configuration appropriée .

  • En outre, si vous voyez l'erreur Initialement posté ( http://i.stack.imgur.com/58q3v.png ), très probablement le hachage de clé que vous voyez sur l'écran est votre vrai. si rien d'autre ne fonctionne, essayez de le saisir sur Facebook.

j'ai eu tous ces résultats avec: Windows 7 64-bit edition, Android Studio 1.2.2, JDK 7.

17
répondu Martin Doychev 2015-07-13 16:15:50

selon Connexion Facebook pour Android , vous devez fournir la valeur de hachage 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
11
répondu JP Ventura 2014-05-24 18:10:48

j'ai essayé tout ce qui précède et rien n'a aidé mon cas avec mes clients! Mon client s'est souvenu qu'il avait installé L'application Facebook sur son appareil. Après qu'il l'a supprimé la connexion fonctionne parfaitement. Le hashkey a été changé et j'ai remplacé les vieilles clés de hachage de la Console des développeurs Facebook avec la clé de l'erreur (comme suggéré ci-dessus) et cela fonctionne! L'application Facebook elle-même pourrait être le problème, donc vous feriez mieux de comprendre cela sur un appareil avec L'application Facebook installé et sur un appareil avec L'application Facebook pas installé et gérer les deux cas..

7
répondu Matan Dahan 2017-04-24 16:30:12

vous devez créer deux hachures de touches, L'une pour le débogage et l'autre pour la publication.

Pour Debug clé de hachage:

sur OS X, exécuter:

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

sous Windows, exécuter:

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

clé de Débogage hachages source

Pour Libération clé de hachage:

sur OS X, exécuter: (remplacer quoi entre <> avec vos valeurs )

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

sur Windows, utilisez: (remplacer ce qui entre <> et vos valeurs)

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

relâchement de la touche hachages source

5
répondu MBH 2017-09-17 14:15:40

j'avais le même problème. première connexion, très bien, mais ensuite, le hachage de la clé invalide.

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

SDK Facebook pour L'Unité obtient le mauvais hachage de clé. Il obtient la clé de "C:\Users"votre utilisateur".android\debug.keystore" et, dans un monde parfait, il devrait l'obtenir du keystore que vous avez créé dans votre projet. C'est pourquoi il vous dit que la clé de hachage n'est pas enregistré.

comme suggéré par Madi , vous pouvez suivre les étapes sur ce lien pour trouver la bonne clé. Il suffit de faire pointer shure sur le clavier à l'intérieur de votre projet, sinon vous n'obtiendrez pas la bonne clé.

2
répondu Jefferson Suzuki Bitencourt 2017-05-23 12:02:47

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

il suffit de modifier le nom du paquet.Ensuite, allez à votre Log cat et sélectionnez Debug search ici, puis vous trouverez la clé de hachage. Maintenant, copiez cette clé de hachage et allez au développeur.Facebook.app_id site puis éditez votre clé de hachage puis appuyez sur Enregistrer. Maintenant, exécutez votre projet android à nouveau je pense que le problème sera résolu.

2
répondu pavel_coder 2015-12-29 15:20:33

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

nous avions défini les permissions comme:

loginButton.setReadPermissions (public_profile email);

cela a fonctionné pour la première fois, mais lorsque nous nous sommes reconnectés à FB, cela a donné L'erreur de hachage invalide.

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

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

Et ça a fonctionné comme un bonheur!

J'espère que ça aidera quelqu'un.

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

2
répondu user3663906 2016-06-02 12:37:13

ce code vous donnera votre hash pour facebook mais vous devez suivre ces étapes afin d'obtenir le hash release condidate . 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) {

}
  1. générer signé apk.
  2. connectez votre téléphone portable et assurez-vous qu'il reste connecté .
  3. installez et lancez l'apk dans votre téléphone en déplaçant manuellement la version apk sur votre téléphone.

  4. regardez maintenant sur android logcat (utilisez filter KeyHash: ) vous devriez voir votre clé de hachage de version pour facebook . il suffit de le copier et de le coller dans votre https://developers.facebook.com/apps c'est sous Paramètres.

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

    bonne chance.

2
répondu abdul jalil 2017-05-08 19:27:40

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

  1. générer du 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.Coller dans le champ requis dans développeur facebook

3.Dans le fichier android studio - > Structure du projet enter image description here

ajouter les paramètres de signalisation

4.Sélectionnez saveurs enter image description here

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

5.choisir le type de construction enter image description here

6.sélectionnez générer une variante et construire

enter image description here

1
répondu CLIFFORD P Y 2017-05-23 12:02:47

j'ai eu le même problème quand je déboguais mon application. J'ai réécrit le hash que vous avez rayé dans l'image ci-jointe (celle que Facebook dit invalide) et l'ai ajouté dans la console des développeurs de Facebook à des hash clés. Juste être prudent sur les fautes de frappe.

cette solution ressemble plus à une solution de rechange facile qu'à une solution appropriée.

1
répondu Piotr Sagalara 2017-06-24 19:17:31

ce que facebook a utilisé n'est pas le mot de passe par défaut et l'alias pour déboguer. Vous devez le changer après et il 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 la construction.dossier gradle. Mais le même mot de passe d'alias doit être utilisé pour générer du hash.

android{
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}
0
répondu abhi shukla 2016-07-20 14:37:34

après tant d'essais, j'ai trouvé une solution. J'ai généré et ajouté à la fois les clés de débogage et de publication sur Facebook developer console et j'obtiens toujours l'erreur.

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

Cela fonctionne comme par magie

0
répondu uchenna nnodim 2018-04-09 11:01:17

utiliser le code ci-dessous dans onCreate() méthode 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 cette phrase clé dans la configuration de L'application Facebook -- > enregistrez les modifications. puis connectez-vous à votre application. cela fonctionne parfaitement dans l'avenir aussi.

-1
répondu Ashutoshg 2015-10-25 04:20:03

les Gars c'est beaucoup de bonnes réponses. Juste une chose. Coller le hachage reçu dans Application -> Paramètres - > principal pas via le tutoriel de démarrage rapide.

-1
répondu Chack 2017-06-23 14:23:49