web-dev-qa-db-fra.com

Clé de signature de Google Play app hash

J'ai opté pour la signature de l'application Google Play et je comprends que Google modifie les clés de signature de l'application et que j'ai trouvé le certificat Sha 1, mais que je n'ai pas trouvé le keyhash.

Comment puis-je obtenir le keyhash de mon application publiée? Existe-t-il un moyen de l'extraire du certificat?

18
vky

Vous pouvez extraire le keyhash de la signature de certificat Sha1 . Les hachages de clés sont généralement extraits de la manière suivante:

public static String getKeyHash(final Context context) {
    PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);
    if (packageInfo == null)
        return null;

    for (Signature signature : packageInfo.signatures) {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
        } catch (NoSuchAlgorithmException e) {
            Log.w(TAG, "Unable to get MessageDigest. signature=" + signature, e);
        }
    }
    return null;
}

Vous pouvez voir que la version SHA-1 de la signature est codée en Base64. 

Sous le menu Signature de l'application dans la console développeur de Google Play, vous verrez la signature du certificat Sha-1 qui ressemble à ceci:

SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9

Fondamentalement, ce que vous devez faire est de changer cela en un tableau d'octets et de coder en base64 ce tableau d'octets. Vous pouvez faire quelque chose comme:

byte[] sha1 = {
    0x3B, (byte)0xDA, (byte)0xA0, 0x5B, 0x4F, 0x35, 0x71, 0x02, 0x4E, 0x27, 0x22, (byte)0xB9, (byte)0xAc, (byte)0xB2, 0x77, 0x2F, (byte)0x9D, (byte)0xA9, (byte)0x9B, (byte)0xD9
};
Log.e("keyhash", Base64.encodeToString(sha1, Base64.NO_WRAP));

Vous pouvez enregistrer ce keyhash dans les paramètres de connexion à Facebook Android ou à tout autre endroit.

31
CoderSpinoza

Vous pouvez convertir le hachage SHA-1 au format hexadécimal (comme dans Play console) en base64 en utilisant la commande suivante:

echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64

Sortie:

M05IhBlQOh9jpg/2ocIx5QE4VS4=

Ce hachage peut être utilisé par exemple lors de la configuration de l'application Facebook.

87
Alex Vasilkov

La méthode la plus facile consiste à copier le message d'erreur de Facebook et à copier le keyhash qu'ils s'attendaient à obtenir de là.

Assurez-vous simplement que vous utilisez votre application téléchargée Google Play:)  enter image description here

1
eladleb