web-dev-qa-db-fra.com

La clé de hachage ne correspond pas lorsque vous vous connectez à Facebook dans Android

Mon application utilise un simple identifiant facebook. J'ai entré le keyhash dans mon tableau de bord d'application, section key_hash et j'ai pu me connecter avec succès. Maintenant, j'ai publié l'application et essayé de me connecter, mais un message d'erreur s'affiche sur une page Web et indique que 

"Invalid Android_key parameter. The key rX6qeRitkFCWui3de74rxB_qc1s does not match any allowed key. Configure your app key hashes at http://developers.facebook.com/apps/<my_fb_app_id>". 

En fait, rX6qeRitkFCWui3de74rxB_qc1s n’est pas ma clé de hachage que j’ai dans l’application native. D'où vient-il? Quoi qu'il en soit, je suis entré dans ce keyhash également dans l'application native, mais j'ai le même message d'erreur et je ne peux toujours pas me connecter. Où vais-je mal? Aidez-moi, s'il vous plaît. 

16
Santhosh

Vous pouvez générer une clé de hachage via le codage, vous ne faites qu'une chose. Collez ce code dans la classe principale (première classe), puis exécutez l'application et vérifiez le logcat où vous trouverez la clé de hachage. 

Une dernière chose, remplacez ce nom de package "com.example.creeper" par votre nom de package: 

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

}
26
Rishi Gautam

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 -> configuration, ajoutez un e-mail de contact puis appliquez, sauvegardez les modifications

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

 enter image description here

11
Arpit Patel

Essayez de générer un nouveau keyhash en utilisant le fichier de clés de votre application utilisé pour signer l'application publiée . Ce problème peut être causé par la fourniture du keyhash généré par votre magasin de clés de débogage qui ne fonctionnera qu'avec des fichiers apk non signés . de lien suivant pour comprendre comment générer un keyhash https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android/3.0/

et mettre à jour la même chose avec la page des paramètres de l'application de facebook.

Vérifiez également si le nom de votre package et le nom de la classe sont corrects.

5
Mahesh

L'utilisation du magasin de clés Debug, y compris le debug.keystore d'Android présent dans le dossier .Android, générait un problème étrange. la connexion à l'aide du bouton de connexion à Facebook sur l'application Android se déroulerait parfaitement comme vous le souhaitiez pour la première fois. Mais à chaque fois que je me déconnectais et que j'essayais de me connecter, une erreur apparaissait: «Cette application n'a pas de clé de hachage Android configurée. S'il vous plaît aller à http: // .... 

Création d'un magasin de clés à l'aide de la commande keytool (keytool -genkey -v -keystore my-release-key.keystore -alias nom_alias -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000) et de placer ce keystore dans mes projets dans le dossier parent L'entrée suivante dans le fichier build.gradle de projets a résolu le problème:

 signingConfigs {
        release {
            storeFile file("my-release-key.keystore")
            storePassword "passpass"
            keyAlias "alias_name"
            keyPassword "passpass"
        }    }

Notez que vous utilisez toujours la méthode suivante à l'intérieur de onCreate () de votre activité Android pour obtenir la valeur de hachage de la clé (pour vous inscrire sur le site developer.facebook.com de votre application) au lieu d'utiliser la ligne de commande (keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64) pour générer une valeur de hachage, car la ligne de commande de certains casés peut créer un hachage de clé incorrect:

    public  void showHashKey(Context context) {
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo("com.superreceptionist",
                    PackageManager.GET_SIGNATURES);
            for (Android.content.pm.Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());

                 String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("KeyHash:", sign);
                //  Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
            }
            Log.d("KeyHash:", "****------------***");
        } catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
        }
    }
3
Sandeep.R

Vous devez attribuer un keyhash à partir de votre debug.keystore ou si vous le signez avec la clé release, avec cela . Assurez-vous que votre nom d'alias est également correct. Cela a un effet sur votre keyhash.

Check this out: Comment créer un hash de clé Facebook?

2
Luser_k

Par exemple, la clé fournie dans l'erreur est "rX6qeRitkFCWui3de74rxB_qc1s", puis la liste du code de hachage dans Facebook, vous essayez de placer ce code à la fin de la fin de "=" en obtenant rX6qeRitkFCWui3de74rxB_qc1s= et de voir si cela fonctionne.

2
Fernanda Leite

Essayez de générer un nouveau hachage de clé et de le modifier dans les développeurs Facebook, puis enregistrez à nouveau l'application avec le nouveau hachage de clé.

1
anddevmanu

Voici la version C # à l’intention de tous ceux qui essaient de faire fonctionner l’exemple Xamarin.

    public  void showHashKey(Context context) 
    {
        try {
            PackageInfo info = context.PackageManager.GetPackageInfo("com.facebook.samples.hellofacebook", PackageInfoFlags.Signatures);
            foreach (Android.Content.PM.Signature signature in info.Signatures) {
                MessageDigest md = MessageDigest.GetInstance("SHA");
                md.Update(signature.ToByteArray());

                var sign = Base64.EncodeToString(md.Digest(), Base64Flags.Default);
                Log.Info("KeyHash:", sign);
            }
            Log..Info("KeyHash:", "****------------***");
        } catch (PackageManager.NameNotFoundException e) {
            e.PrintStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.PrintStackTrace();
        }
    }
1
BenBtg

Pour moi, quand j'ai exécuté la commande keytool et qu'elle m'a demandé un mot de passe, j'ai interprété cela comme signifiant que je devais choisir un mot de passe pour le hachage. En fait, vous devez fournir le mot de passe au magasin de clés (l'emplacement où le hachage est conservé). La chose drôle est (pas drôle, "ha ha"), il acceptera n'importe quel mot de passe et produira un hash pour vous. Cela a causé mon hash pour ne pas correspondre. Heureusement, j'avais stocké mon mot de passe dans le trousseau OS X il y a longtemps, alors j'ai trouvé ce qu'il était vraiment. J'ai essayé le mot de passe correct et j'ai obtenu un hachage différent qui a fonctionné. Notez que le mot de passe du magasin de clés par défaut est Android, alors essayez-le, il se peut qu'il ne vous manque pas.

Je pense vraiment qu'un mot de passe incorrect doit vous rejeter plutôt que de générer un hachage. Je me demande s'il s'agit d'un bogue. Dans l'affirmative, veuillez laisser un lien de rapport de bogue dans les commentaires.

0
ABCD.ca