使用 .android 文件夹中包含 android 的 debug.keystore 的调试密钥库会产生一个奇怪的问题;使用 android 应用程序上的 facebook 登录按钮登录将第一次完美地发生。但是当我退出并尝试登录时,它会抛出一个错误说:这个应用程序没有配置 android key hashes。请访问 http:// ....
使用 keytool 命令创建密钥库(keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000)并将此密钥库放在我的项目最顶层的父文件夹中并制作项目 build.gradle 文件中的以下条目解决了该问题:
signingConfigs {
release {
storeFile file("my-release-key.keystore")
storePassword "passpass"
keyAlias "alias_name"
keyPassword "passpass"
} }
请注意,您始终在您的 android 活动的 onCreate() 中使用以下方法来获取密钥哈希值(在您的应用程序的 developer.facebook.com 站点中注册),而不是使用命令行(keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64) 生成哈希值作为命令行在某些情况下可能会输出错误的密钥哈希:
public void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo("com.superreceptionist",
PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("KeyHash:", sign);
// Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
Log.d("KeyHash:", "****------------***");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}