it-swarm.com.ru

Хэш ключа подписи приложения Google Play

Я выбрал подпись приложения Google Play, и я понимаю, что Google меняет ключи подписи приложения, и я нашел сертификат Sha 1, но не смог найти хеш-код.

Как я могу получить keyhash моего выпущенного приложения, есть ли способ извлечь его из сертификата?

18
vky

Вы можете извлечь хеш-код из подписи сертификата Sha1 . Ключевые хеши обычно извлекаются следующим образом:

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

Вы можете видеть, что версия подписи SHA-1 имеет кодировку Base64. 

В меню «Подписание приложения» консоли разработчика Google Play вы увидите подпись сертификата Sha-1, которая выглядит следующим образом:

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

По сути, вам нужно преобразовать это в байтовый массив, а Base64 закодировать этот байтовый массив. Вы можете сделать что-то вроде:

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

Вы можете зарегистрировать этот ключ в настройках входа в Android Facebook или где угодно.

31
CoderSpinoza

Вы можете преобразовать хеш SHA-1 в шестнадцатеричном формате (как это найдено в консоли Play) в хеш base64, используя следующую команду:

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

Результат:

M05IhBlQOh9jpg/2ocIx5QE4VS4=

Этот хеш можно использовать, например, при настройке приложения Facebook.

87
Alex Vasilkov

Проще всего было бы скопировать сообщение об ошибке Facebook и скопировать ключ, который они ожидали получить оттуда.

Просто убедитесь, что вы используете загруженное приложение Google Play:)  enter image description here

1
eladleb