【问题标题】:Facebook Android Release hash keyFacebook Android 发布哈希键
【发布时间】:2016-11-01 08:37:07
【问题描述】:

我使用开发密钥和运行调试 apk 登录 facebook 没有问题。 但是当我生成发布 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 审核吗?

【问题讨论】:

    标签: android facebook hash


    【解决方案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 应用程序 ID 的 Android 设置。这对我有用,但很难输入正确的,也不要忘记添加 ~ 或任何从无效密钥哈希显示的字符。

    【讨论】:

    • 这应该是开发密钥,我已将其复制并粘贴到我的控制台,但仍然无法使用
    • @ywj7931 你也可以手动输入,但是输入的时候很痛苦。
    【解决方案2】:

    您需要获取您的生产哈希密钥并将其添加到 Facebook 控制台中的 Facebook 哈希密钥。

    keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
    

    获得密钥后,您可以将其添加到您的 Facebook 应用页面。

    或者您可以在使用生产密钥存储签名的 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 控制台中应用页面的哈希键中。

    【讨论】:

    • 我觉得第一个命令和我用的一模一样,但是还是不行
    • 在您使用密钥签名的生产 apk 中,您可以尝试第二种解决方案并记录您的密钥。然后您可以将其添加到 Facebook 控制台并从您的 apk 中删除此日志和操作。
    • 嗯,还是不行,是不是因为我的应用没有在google play上发布?对于第一个解决方案,我使用的是我签署了我的 apk 的密钥,对吗?
    • 是的,您必须将您的 apk 发送到 Facebook 并进行验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多