Je ne comprends pas du tout ce processus. J’ai pu naviguer dans le dossier contenant l’outil clé dans le SDK Java. Bien que l’erreur persiste, openssl n’est pas reconnu comme une commande interne ou externe. Le problème est que même si je peux faire fonctionner ceci, que ferais-je et avec quoi après?
Voici ce que tu dois faire –
Téléchargez openSSl depuis Code Extract it. créer un dossier OpenSSL dans C: / et copier le code extrait ici.
détecter le chemin du fichier debug.keystore. Si vous n’avez pas trouvé, faites une recherche dans C: / et utilisez le Chemin dans la commande à l’étape suivante.
détecter votre chemin keytool.exe et aller dans cette invite de commandes dir / in et exécuter cette commande dans 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 va demander un mot de passe, mettre android c’est tout. tu vas avoir une clé-hash
Pour Linux
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 et exécutez la commande ci-dessus.
Pour la version build
keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64
REMARQUE: Assurez-vous que dans les deux cas, vous demandez un mot de passe. 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 saisir le mot de passe que vous avez défini lors de la création du fichier de clés pour le libérer.
Veuillez essayer 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()); Ssortingng hashKey = new Ssortingng(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); } }
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, consultez le lien fourni par coder_For_Life22).
La méthode la plus simple consiste à copier le fichier binary openssl.exe sur votre chemin d’outil si vous êtes sous Windows. Si vous ne voulez pas faire cela, vous devez l’append à votre variable d’environnement PATH
. Ensuite, exécutez la commande fournie dans les documents.
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 -keystore
de débogage. Cet emplacement dépend également de votre système d’exploitation. Devrait être dans l’un des endroits suivants:
Si vous avez tout fait correctement, vous devriez être invité à entrer un mot de passe. C’est android
pour le certificate 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 de android key hash
dans les préférences de votre application sur Facebook. Pour vous y rendre, rendez-vous sur 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.
Pour générer votre clé de hachage sur votre ordinateur local, exécutez l’utilitaire keytool de Java (qui devrait se trouver sur le chemin de votre console) sur le fichier de clés de débogage Android. C’est, par défaut, dans votre répertoire .android à la maison. Sous OS X, exécutez:
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
Pour les fenêtres:
keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | openssl sha1 -binary | openssl base64
Entrez le mot de passe: android -> Hit Enter
Copier la clé de hachage générée -> Connexion à Facebook avec votre compte de développeur
Accédez à votre application Facebook -> Paramètres -> Coller la clé de hachage dans l’option “hash clés” -> enregistrer les modifications.
Maintenant, testez votre application Android avec Facebook Log-In / Share, etc.
Il existe également 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 du SDK FB (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 Ssortingng hashKey = new Ssortingng(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 “=”.
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.ssortingng.login_failed_dialog_title) .setMessage(exception.getMessage()) .setPositiveButton(R.ssortingng.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 devez faire est de le copier.
Pour le lien tutoriel vedio facile pour générer KeyHash ici
Téléchargez openssl depuis ICI
Pour quelqu’un comme moi, voici les détails complets (pour Windows)
1. Téléchargez OpenSSl au 1er ou au 2ème sur la base de votre système 32 bits ou 64 bits.
2. Extraire le fichier zip téléchargé dans le répertoire C
3. Ouvrez le dossier extrait jusqu’à bin et copiez le chemin, il devrait s’agir de quelque chose comme C:\openssl-0.9.8k_X64\bin\openssl
(append \ openssl à la fin)
4. (Obtenez le chemin du dossier bin de Jdk, si vous savez comment, ignorez-le).
Ouvrez android studio ~ file ~ Structure du projet (ctrl + alt + shift + s), sélectionnez l’emplacement du SDK dans le panneau latéral 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 Jdk parce que vous pourriez utiliser jdk intégré comme moi
maintenant vous avez l’emplacement OpenSSl et l’emplacement JDK
5. Maintenant, nous avons besoin de l’emplacement du fichier de clés de débogage, pour cela, ouvrez C ~> Users ~> YourUserName ~> .android, il devrait y avoir un nom de fichier debug.keystore, copiez maintenant l’emplacement du chemin, cela devrait ressembler à
C:\Users\Redman\.android\debug.keystore
6. invite maintenant invite et tapez commande
cd YourJDKLocationFromStep4
dans mon cas
cd C:\Program Files\Android\Android Studio\jre\bin
7. maintenant construire 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 jamais fait quelque chose à droite, il vous sera demandé un mot de passe (mot de passe est Android)
Enter keystore password: android
thats it, vous recevrez le hachage clé, il suffit de le copier et de l’utiliser
Téléchargez ssl ouvert :
Ajoutez ensuite openssl \ bin aux variables système du chemin:
Mon ordinateur -> propriétés -> Configurations avancées -> Avancé -> Variables système -> sous les variables système recherche le chemin et ajoute ceci à ses terminaisons:; yourFullOpenSSLDir \ bin
Maintenant, ouvrez une ligne de commande sur votre dossier jdk \ bin C: \ Program Files \ Java \ jdk1.8.0_40 \ bin (dans les fenêtres maintenez shift et clic droit -> 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 longueur 28 qu’il génère après avoir donné le mot de passe.
Depuis l’API 26, vous pouvez générer vos HASH KEYS en utilisant le code suivant dans KOTLIN sans avoir besoin de Facebook SDK.
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 = Ssortingng(Base64.getEncoder().encode(md.digest())) Log.i("AppLog", "key:$hashKey=") } } catch (e: Exception) { Log.e("AppLog", "error:", e) } }
Vous pouvez obtenir toutes vos empreintes digitales sur https://console.developers.google.com/projectselector/apis/credentials
Et utilisez ce code Kotlin pour le convertir en keyhash:
fun main(args: Array) { listOf("", "", "") .map { it.split(":") } .map { it.map { it.toInt(16).toByte() }.toByteArray() } .map { Ssortingng(Base64.getEncoder().encode(it)) } .forEach { println(it) } }
J’ai trouvé l’outil le plus simple et je l’ai utilisé plusieurs fois, ça fonctionne parfaitement. jetez un coup d’œil, ça vous aidera.
Cochez cette réponse pour plus de détails.
Exécutez soit cette 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 Ssortingng hashKey = new Ssortingng(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 ici et ici .
J’avais le même problème, on ne me demandait pas de mot de passe, et il semblerait que le chemin du fichier de clés était incorrect.
En fait, si l’outil clé ne trouve pas le fichier de clés que vous avez défini, il en créera un et vous donnera la mauvaise clé car il n’utilise pas le bon fichier.
La règle générale est que si l’on ne vous demande pas de mot de passe, la mauvaise clé est générée.
Vous pouvez utiliser cet 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