web-dev-qa-db-fra.com

Comment créer Android Facebook Key Hash?

Je ne comprends pas du tout ce processus. J'ai été en mesure de naviguer dans le dossier contenant l'outil de clé dans le SDK Java. Bien que je continue à avoir l'erreur OpenSL pas reconnu comme une commande interne ou externe. Le problème est que même si je peux réussir à faire fonctionner cela, que ferais-je et avec quoi après?

142
Somk

Voici ce que tu dois faire -

Téléchargez openSSl depuis Code Extrayez-le. créer un dossier OpenSSL dans C:/et copier le code extrait ici.

détecter le chemin du fichier debug.keystore. Si vous ne trouvez pas, faites une recherche dans C:/et utilisez le chemin dans la commande à l'étape suivante.

détectez votre chemin keytool.exe et accédez à cette commande dir/in Invite et exécutez cette commande en 1 ligne

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.Android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

il vous demandera un mot de passe, mettez Android c'est tout. tu auras une clé de hachage

190
coder_For_Life22

Pour Linux et Mac

Terminal ouvert: 

Pour la construction de débogage

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

Vous trouverez debug.keystore dans le dossier ".Android". Copiez-le et collez-le sur le bureau, puis exécutez la commande ci-dessus.

Pour l'édition Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

NOTE: Assurez-vous que dans les deux cas, un mot de passe est demandé. S'il ne demande pas de mot de passe, cela signifie que quelque chose ne va pas dans la commande. Le mot de passe pour debug.keystore} _ est "Android" et vous devez entrer le mot de passe que vous avez défini lors de la création du magasin de clés.

130
Biraj Zalavadia

S'il vous plaît essayez ceci:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }
68
Maddy

OpenSSL: Vous devez l'installer s'il n'est pas préinstallé avec votre système d'exploitation (par exemple, Windows ne l'a pas préinstallé). Comment installer cela dépend de votre système d'exploitation (pour Windows, vérifiez le lien fourni par coder_For_Life22). 

Le moyen le plus simple de ne pas jouer est de copier le fichier binaire openssl.exe dans votre chemin keytool si vous utilisez Windows. Si vous ne voulez pas faire cela, vous devez l'ajouter à votre variable d'environnement PATH. Ensuite, exécutez la commande fournie dans la documentation.

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

Notez que l'argument après -keystore pointe vers votre magasin de clés de débogage. Cet emplacement dépend également de votre système d'exploitation. Devrait être dans l'un des endroits suivants:

  • Windows Vista ou 7 - C:\Utilisateurs\.Android\debug.keystore
  • Windows XP - C:\Documents and Settings\.Android\debug.keystore
  • OS X et Linux - ~/.Android/debug.keystore

Si vous avez tout fait correctement, vous devriez être invité à entrer un mot de passe. C'est Android pour le certificat de débogage. Si le mot de passe est correct, la console imprime un hachage (caractères et chiffres quelque peu aléatoires). 

Prenez cela et copiez-le dans le champ Android key hash dans les préférences de votre application sur Facebook. Pour vous y rendre, accédez à developers.facebook.com/apps , sélectionnez votre application, accédez à Edit settings et faites défiler vers le bas. Après cela, attendez quelques minutes jusqu'à ce que les modifications prennent effet.

45
user658042

pour générer votre hachage de clé sur votre ordinateur local, exécutez l'utilitaire keytool de Java (qui devrait figurer sur le chemin de votre console) sur le magasin de clés de débogage Android. Ceci est, par défaut, dans votre répertoire personnel .Android). Sous OS X, lancez:

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

Sous Windows, utilisez: -

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

j'espère que ceci vous aidera

Ref - développeur facebook site

21
Rakesh

Il y a aussi une solution courte. Il suffit de lancer ceci dans votre application: 

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

Un plus long qui n'a pas besoin de FB SDK (basé sur une solution ici ):

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

Le résultat devrait se terminer par "=".

12
android developer

Pour quelqu'un comme moi, voici les détails complets (Pour Windows)

1. Télécharger OpenSSl 3ème ou 4ème (avec e fonctionnera mieux) en fonction de votre système 32 bits ou 64 bits.

2. Extraire le répertoire Zip téléchargé dans le répertoire C 

3. Ouvrez le dossier extrait jusqu'à bin et copiez le chemin, ce qui devrait ressembler à C:\openssl-0.9.8k_X64\bin\openssl (add\openssl à la fin).

4. (Obtenez le chemin du dossier bin de Jdk, si vous savez comment, ignorez cela). 

Ouvrez le studio Android ~ fichier ~ structure du projet (ctrl + alt + décalage + s), sélectionnez l'emplacement du SDK dans le panneau de gauche, copiez l'emplacement du JDK et ajoutez/bin à celui-ci. 

Donc, l'emplacement final du JDK sera comme C:\Program Files\Android\Android Studio\jre\bin

nous suivons cette méthode pour obtenir l'emplacement de Jdk car vous pourriez utiliser un jdk intégré comme moi

 enter image description here

maintenant vous avez l'emplacement OpenSSl et l'emplacement JDK 

5. maintenant nous avons besoin de l'emplacement du magasin de clés de débogage. Pour cela, ouvrez C ~> Utilisateurs ~> VotreNomUtilisateur ~> .Android, il devrait y avoir un nom de fichier debug.keystore; copiez maintenant l'emplacement du chemin d'accès. 

C:\Users\Redman\.Android\debug.keystore

6. ouvre maintenant la commande Invite et tapez la commande

cd YourJDKLocationFromStep4  

dans mon cas 

 cd C:\Program Files\Android\Android Studio\jre\bin

7. construit maintenant la commande suivante

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

dans mon cas, la commande ressemblera à 

keytool -exportcert -alias androiddebugkey -keystore C:\Users\Redman\.Android\debug.keystore | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64

maintenant, entrez cette commande dans l'invite de commande, si vous avez tout à fait raison, il vous sera demandé un mot de passe (le mot de passe est Android)

Enter keystore password:  Android

thats it, vous recevrez le hachage de clé, il suffit de le copier et de l'utiliser

Pour Signed KeyHash, construisez la commande suivante

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

entrez votre mot de passe keystore, Si vous entrez un mot de passe incorrect, KeyHash sera incorrect 

REMARQUE 

Si pour une raison quelconque, si une erreur se produisait sur un chemin, enveloppez-le de guillemets. De plus, Windows Power Shell ne fonctionnait pas bien pour moi, j'ai utilisé git bash (ou la commande Invite).

exemple

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.Android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
11
Manohar Reddy

Pour les fenêtres:

  1. commande ouverte Invite et colle la commande ci-dessous

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

  1. Entrez le mot de passe: Android -> Hit Enter

  2. Copier la clé de hachage générée -> Connectez-vous à Facebook avec votre compte de développeur

  3. Allez dans votre application Facebook -> Paramètres -> Coller la clé de hachage dans l'option "Casses", -> Enregistrer les modifications.

  4. Maintenant, testez votre application Android avec Facebook Log-in/Share etc.

9
swiftBoy

C'est comme ça que j'ai obtenu mon: 

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

Donc, lorsque vous essayez d’entrer sans la clé, une exception se produira. Facebook a mis la touche DROITE dans cette exception. Tout ce que vous avez à faire est de le copier. 

6
Valikpon

Pour faciliter le tutoriel de vedio pour le générer KeyHash ici

Téléchargez openssl de ICI

5
Arpit Patel

Depuis l'API 26, vous pouvez générer vos HASH KEYS à l'aide du code suivant dans KOTLIN sans avoir besoin du kit de développement logiciel (SDK) de Facebook.

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

 enter image description here

4
Hanny

Exécutez ceci dans votre application:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

Ou ca:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

Et puis regardez les journaux.

Le résultat devrait se terminer par "=".

La solution est basée sur ici et ici .

3
android developer

Télécharger open ssl :

Ajoutez ensuite openssl\bin aux variables système du chemin:

Mon ordinateur -> Propriétés -> Configurations avancées -> Avancées -> Variables système -> sous variables système trouver chemin, et ajoutez-le à ses terminaisons: ;

Ouvrez maintenant une ligne de commande sur votre dossier jdk\bin C:\Program Files\Java\jdk1.8.0_40\bin (maintenez la touche Maj enfoncée et cliquez avec le bouton droit de la souris -> ouvrez la ligne de commande ici) et utilisez:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

Et copiez le numéro de 28 lettres généré après avoir donné le mot de passe.

3
sagits

Vous pouvez simplement utiliser une ligne javascript dans la console du navigateur pour convertir une clé de carte hexadécimale en base64. Ouvrez la console dans le dernier navigateur (F12 sous Windows), collez le code et remplacez la carte SHA-1, SHA-256 que Google play fournit sous _Release Managment_> _App signing_:

_> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
_
2
Christos Lytras

EASY WAY -> N'installez pas openssl -> USE GIT BASH!

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

Le mot de passe par défaut est "Android"

La plupart d'entre nous ont installé Git Bash, c'est donc ma méthode préférée.

1
Dmitri R117

Vous pouvez obtenir toutes vos empreintes digitales à partir de https://console.developers.google.com/projectselector/apis/credentials
Et utilisez ce code Kotlin pour le convertir en keyhash:

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}
1
Alexmelyon

https://developers.facebook.com/docs/Android/getting-started/

4.19.0 - 25 janvier 2017

SDK Facebook

Modifié

Le SDK de Facebook est maintenant auto-initialisé au démarrage de l'application. Dans la plupart des cas, un appel manuel à FacebookSDK.sdkInitialize () n'est plus nécessaire. Voir guide de mise à niveau pour plus de détails.

Pour le débogage

try {
    PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 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 (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}
1
Ketan Ramani

Si vous avez déjà téléchargé l'application sur Play Store, vous pouvez générer une clé de hachage comme suit:

1) Aller à la gestion des versions ici

2) Sélectionnez Release Management -> Signature de l'application

3) Vous pouvez voir la clé SHA1 au format hexadécimal du certificat de signature de l'application.

4) Copiez le SHA1 au format hexadécimal et convertissez-le au format base64, vous pouvez utiliser le lien this 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 les paramètres -> de base -> les hachages de clé.

1
SumiSadiq

J'ai trouvé l'outil le plus simple et l'ai utilisé plusieurs fois. Il fonctionne parfaitement. check it out, ça va aider.

Vérifiez this answer pour plus de détails.

1
TapanHP

Essayez cette réponse

https://stackoverflow.com/a/54513168/9236994

avec un minimum d'efforts aide à résoudre le problème.

0
Vicky Salunkhe

J'avais exactement le même problème, on ne me demandait pas de mot de passe et il semblait que le chemin d'accès au fichier de clés était incorrect.

En fait, si l'outil de clé ne trouve pas le magasin de clés que vous avez défini, il en créera un et vous donnera la mauvaise clé puisqu'il n'utilise pas le bon.

La règle générale est que si un mot de passe ne vous est pas demandé, la mauvaise clé est générée.

0
Nick Tsitlakidis

Vous pouvez utiliser ceci apk

1.first install the app from the Google Play Store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
0
armnotstrong

Cela aidera également les nouveaux abeilles.

ajoute simplement plus de détails à la réponse de @ coder_For_Life22.

Si cette réponse vous aide à ne pas oublier de passer au vote suivant. ça nous motive.

Pour cela, vous devez déjà connaître le chemin du fichier de clés de l'application et le mot de passe (-)

pour cet exemple, considérons que la clé est stockée dans "c:\keystorekey\new.jks"

1. ouvrir cette page https://code.google.com/archive/p/openssl-for-windows/downloads

2. Téléchargez le fichier Zip 32 ou 64 bits selon votre système d'exploitation Windows.

3. Extrayez le fichier téléchargé où vous le souhaitez et souvenez-vous du chemin.

4. pour cet exemple, nous considérons que vous avez extrait le dossier dans le dossier de téléchargement.

l'adresse du fichier sera donc "C:\Utilisateurs\0\Téléchargements\openssl-0.9.8e_X64\bin\openssl.exe";

5. maintenant sur le clavier, appuyez sur windows + bouton r.

6. cela ouvrira la boîte d'exécution.

7. tapez cmd et appuyez sur Ctrl + Maj + Entrée.

8. cela ouvrira l'invite de commande en tant qu'administrateur.

9. Ici, accédez au dossier bin de Java:

si vous utilisez jre fourni par Android Studio, vous trouverez le chemin comme suit:
une. ouvrir le studio Android.
b. fichier-> structure du projet
c. dans le volet de gauche, cliquez sur "Emplacement du SDK".
ré. dans le volet de droite, en dessous de "Emplacement JDK" se trouve votre chemin JRE.
e. ajoutez "\ bin" à la fin de ce chemin car le fichier "keytool.exe" est nécessaire dans ce dossier.
pour cet exemple que je considère, vous avez installé Java séparément et voici le chemin
"C:\Program Files\Java\jre-10.0.2\bin"
si vous avez installé 32 bits Java il sera dans
"C:\Fichiers de programme (x86)\Java\jre-10.0.2\bin"
dix. maintenant avec les chemins ci-dessus, exécutez la commande comme suit:

keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. Il vous sera demandé un mot de passe, indiquez le mot de passe que vous avez indiqué lors de la création de la clé de magasin de clés.

    !!!!!! cela vous donnera la clé

erreurs: si vous obtenez:
---
'keytool' n'est pas reconnu comme une commande interne ou externe
---
Cela signifie que Java est installé ailleurs.

0
sifr_dot_in