Facebook Android Release散列密钥

时间:2016-10-31 09:45:05

标签: android facebook hash

使用开发密钥和运行调试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审核吗?

2 个答案:

答案 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控制台的应用页面中的哈希键。