使用开发密钥和运行调试apk登录facebook时没有问题。 但是当我生成release apk并在设备上运行时,它会显示
“密钥无效,密钥哈希xxxxxxxxxx与任何存储的密钥哈希都不匹配”
我实际上在控制台上添加了释放键,并且该键与上面的键不匹配,即使我输入上面显示的键,它也不起作用, 我使用以下命令生成释放密钥:
keytool -exportcert -alias androiddebugkey -keystore C:\Users\ywj7931\.android\debug.keystore | C:\Users\ywj7931\Downloads\openssl-0.9.8e_X64\bin\openssl sha1 -binary | C:\Users\ywj7931\Downloads\openssl-0.9.8e_X64\bin\openssl base64
是因为我的应用未在Google Play上发布或尚未经过Facebook审核吗?
答案 0 :(得分:1)
问题是你的密钥哈希与Facebook上存储的密钥哈希不匹配。您可以使用以下代码查看日志密钥哈希:
Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
然后将此Release Key Hash复制并粘贴到您的Facebook App ID的Android设置中。
<强>更新强>
如果您想手动添加它,您可以在应用程序中添加错误的密钥哈希,然后手动键入您的Facebook App ID的Android设置。这项工作对我来说很难输入正确的,也不要忘记添加~
或从无效密钥哈希中显示的任何字符。
答案 1 :(得分:0)
您需要获取Production Hash密钥并将其添加到Facebook控制台中的Facebook Hash密钥。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
获得密钥后,您可以将其添加到Facebook App Page中。
或者你可以在你用生产密钥商店签署的prod apk中得到它。
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.app.package",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
Base64.DEFAULT));
Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
Base64.DEFAULT), Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
您必须将其添加到Facebook控制台的应用页面中的哈希键。