android的Facebook发布密钥哈希不起作用
要生成释放密钥哈希,我需要android的Facebook发布密钥哈希不起作用,android,facebook,hash,apk,facebook-android-sdk,Android,Facebook,Hash,Apk,Facebook Android Sdk,要生成释放密钥哈希,我需要 keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 同样,当我使用调试键和构建时,它工作得很好。这个问题可能是Proguard吗?我用的是下面几行 -keep class com.facebook.** { *; } -keepattributes Signatur
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
同样,当我使用调试键和构建时,它工作得很好。这个问题可能是Proguard吗?我用的是下面几行
-keep class com.facebook.** { *; }
-keepattributes Signature
为了确保您的keyhash是正确的,您可以使用下面的代码进行验证
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"yourpackagename",
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) {
}
进口
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
您是否在清单文件中添加了释放密钥?当您运行此命令时,将询问您的密码?是,该命令询问密码,我键入的密码与我从Eclipse导出释放apk时使用的密码相同否我没有在清单中添加释放密钥。我不知道我应该这么做。我该怎么做?我的互联网坏了一段时间。康卡斯特似乎在挑战网络中立性,降低了我的整体服务质量。所以我花了大约一个小时才回来。我的互联网断了,现在又恢复了。感谢您的回复,但是PackageInfo似乎不存在,并且没有签名。你们进口什么?谢谢。@KatedralPillon添加了导入。谢谢。打印的密钥散列既不像我的调试密钥,也不像我的发布密钥。那是哪把钥匙呢?我在调试模式下测试,当然(与已发布的apk相反)@KatedralPillon您需要先签署apk,然后通过usb电缆连接手机,并在手机上运行已签署的apk。检查您的日志以获取密钥哈希。您的密钥哈希将以“=”结尾。谢谢+1.您的方法实现了与
keytool-exportcert-alias-keystore | openssl sha1-binary | openssl base64
相同的功能。但我仍然停留在我开始的地方:)。为什么我的发布版本不会发布?
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;