Bạn có thể trích xuất keyhash từ chữ ký chứng chỉ Sha1. Mã khóa thường được trích xuất theo cách sau:
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;
}
Bạn có thể thấy phiên bản chữ ký SHA-1 được mã hóa Base64.
Theo đơn Ký App trong Google phát triển trò chơi giao diện điều khiển, bạn sẽ thấy Sha-1 giấy chứng nhận chữ ký đó trông như thế này:
SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9
Về cơ bản, những gì bạn phải làm là thay đổi này vào một mảng byte và Base64 mã hóa mảng byte đó. Bạn có thể làm một cái gì đó như:
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));
Bạn có thể đăng ký keyhash này để cài đặt đăng nhập android android hoặc bất cứ nơi nào bạn muốn.
Tính năng này hoạt động rất tốt. Cảm ơn! –
Bạn cũng nhận được giá trị băm này trong một thông báo lỗi từ facebook khi đăng nhập vào đúng tài khoản từ ứng dụng. Điều thú vị là mặc dù các băm dường như là trực quan giống nhau, khi tôi lập trình tạo ra nó bằng cách sử dụng phương pháp trên nó làm việc, nơi mà trực quan gõ nó trong không. – Chris
dành rất nhiều thời gian để tìm giải pháp này, Chúc mừng. –