【问题标题】:Facebook Invalid key hash on public appFacebook公共应用程序上的无效密钥哈希
【发布时间】:2017-09-07 12:23:00
【问题描述】:

我的 Android 上出现“无效的密钥哈希”错误,即使我的应用正在生产中并且 facebook 应用设置为公开。如果我将密钥哈希放入 facebook 设置中,它可以正常工作,但我想这只能在我自己的设备上工作。我在这里做错了什么?

【问题讨论】:

标签: android facebook unity3d


【解决方案1】:

您必须使用此方法创建一个发布 apk 并打印 keyhash。并在 fb consol 中设置该 keyHash。

public static void printHashKey(Context context)
{
    // Add code to print out the key hash
    try {
        PackageInfo info = context.getPackageManager().getPackageInfo(
                com.example.app.BuildConfig.APPLICATION_ID,
                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 (PackageManager.NameNotFoundException e) {
        e.printStackTrace();

    } catch (NoSuchAlgorithmException e) {

        e.printStackTrace();
    }
}

【讨论】:

  • 你好。我已经在 Debug Android Key Hash 的 Facebook 设置下从 Unity 获得了密钥哈希,尽管该密钥不能解决问题,而且它不是来自错误的那个。正如我上面提到的,如果我从错误中插入密钥,它可以工作,但它不是对所有设备都是唯一的吗?
【解决方案2】:

按照此步骤进行解决。

  1. 将此代码粘贴到您的活动中。

    public static void printHashKey(Context context) 
    { 
        // Add code to print out the key hash 
        try 
        { 
            PackageInfo info = context.getPackageManager().getPackageInfo( com.example.app.BuildConfig.APPLICATION_ID, 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 (PackageManager.NameNotFoundException e) 
        { 
            e.printStackTrace(); 
        } 
        catch (NoSuchAlgorithmException e) 
        { 
            e.printStackTrace(); 
        } 
    }
    
  2. 签署您的 APK。(发布 APK)

  3. 将生成的签名 APK 安装到您的手机上
  4. 将手机与电脑连接。
  5. 现在打开您放置上述代码的屏幕。
  6. 在这里您可以在logcat 中看到新的HashKey
  7. 将此HashKey 粘贴到您创建应用的 Facebook 开发者网站中。
  8. 尽情享受您的应用。

【讨论】:

  • 你好。我已经在 Debug Android Key Hash 的 Facebook 设置下从 Unity 获得了密钥哈希,尽管该密钥不能解决问题,而且它不是来自错误的那个。正如我上面提到的,如果我从错误中插入密钥,它可以工作,但它不是对所有设备都是唯一的吗?
  • 所有设备的密钥都相同,您的应用是否已在 Google Play 商店上线?这个问题仅与签名 apk 有关吗?如果是,那么您需要在我的回答步骤中提到的 developer.facebook.com 中添加另一个密钥哈希
猜你喜欢
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2016-02-27
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多