Я сгенерировал хэш ключа для входа в систему с помощью этого метода.
public void printHashKey() {
try {
showLog("PackageName " + getPackageName());
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));
showLog("printHashKey() Hash Key: " + hashKey);
}
} catch (NoSuchAlgorithmException e) {
showLog("Error in printHashKey()" + e);
} catch (Exception e) {
showLog("Error in printHashKey()" + e);
}
}
Когда я сгенерировал подписанный apk, он сказал, что хэш ключа, сгенерированный вышеуказанным методом во время выполнения, может использоваться, и он не совпадает с хешем, зарегистрированным на консоли разработчика Facebook.
Но все было в порядке, так как я несколько раз проверял его перед созданием отладочного подписанного apk.
Таким образом, я сгенерировал еще один ключевой хэш с помощью этого
keytool -exportcert -alias androiddebugkey -keystore C:\Users\USER\Documents\keys\ws_key.jks | C:\OpenSSL\bin\openssl sha1 -binary | C:\OpenSSL\bin\openssl base64
Опять же, сгенерированный ключ не может войти в систему с Facebook.
Итак, я сгенерировал хэш ключа, сгенерировав ключ SHA1 с созданным приложением, а затем преобразовал сгенерированный ключ SHA1 в хеш.
Тогда проблема решилась.
Я знаю, что релиз apk и debug apk имеют разные подписи и разные хэши.
Мой вопрос
- «Почему ключевые хеши отличаются, даже если приложение все еще находится в режиме отладки?»