为Android移动应用生成哈希键

时间:2014-02-27 05:14:31

标签: android facebook

我正在开发一个Android应用程序,并且必须向facebook提供hashkey。我已经尝试了3个appoarch,但没有一个有效。

遵循官方文件:

1。)我在这样的窗口中写了一个命令

"C:\Program Files\Java\jdk1.7.0_17\bin\keytool.exe" -exportcert -alias androiddebugkey -keystore C:\hk7.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

输出:

57GY9jCxTL9lwhI9oAsjNZN1UJ4=

2。)和编程方式

try {
        PackageInfo info =     getPackageManager().getPackageInfo("com.package.mypackage",     PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Log.e("MY KEY HASH:", sign);
            Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
        }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

输出:

PH//aR6qmcnZxj/n+4oT6AzEMZQ=

适用于我的设备

3.)别名值

keytool -alias hk7 -exportcert -keystore C:\hk7.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

输出:

kiHnmqD3oxggF1Y7rgTqaWTPZk4=

只有第二种方式有效,但它仅适用于我的设备。在我的应用程序中,我记录了异常,它说API密钥不匹配。但似乎每个设备都有自己的密钥。如何解决?是不是因为我的openssl太老了?还是android端实现问题?是否有任何网站用于测试密钥是否有效?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

第二种方式是最好的方式,现在你需要添加你想要测试的每个设备hashkey,因为你的应用程序不在Playstore上...一旦你在playstore / sign上用ttop key上传t app然后你必须只添加那个keyhash ....使用此函数获取KEYHASH

private void printKeyHashForThisDevice() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.package", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());

            String keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Logger.logger("============================================");
            Logger.logger("KeyHash================  ", keyHash);
            Logger.logger("============================================");
            System.out.println("KeyHash================  " + keyHash);

        }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }
}