无效的密钥哈希 - android facebook

Posted

技术标签:

【中文标题】无效的密钥哈希 - android facebook【英文标题】:invalid key hash - android facebook 【发布时间】:2016-07-23 11:17:50 【问题描述】:

我创建了一个使用 facebook 登录的应用程序。我已将密钥哈希添加到 facebook 开发人员页面,它在所有设备上都运行良好。 现在我已经将应用程序上传到谷歌播放,当我尝试登录时,它说密钥哈希与任何存储的密钥哈希都不匹配。 我复制了错误消息中的密钥哈希并粘贴了它。仍然 - 不起作用。 我尝试使用发布密钥存储在 cmd 中生成密钥哈希 - 不走运。

有谁知道问题出在哪里以及如何解决?

提前致谢!

【问题讨论】:

【参考方案1】:

尝试在使用发布证书签名的应用中添加以下代码 sn-p,将哈希输出与您提交到 Facebook 门户的哈希输出进行比较:

PackageInfo info;
try 
    info = getPackageManager().getPackageInfo("com.package.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) 
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String hash= new String(Base64.encode(md.digest(), 0));
        Log.e("hash", hash);
    
 catch (NameNotFoundException e1) 
    Log.e("name not found", e1.toString());
 catch (NoSuchAlgorithmException e) 
    Log.e("no such an algorithm", e.toString());
 catch (Exception e) 
    Log.e("exception", e.toString());

【讨论】:

但这给了我一个用于调试的密钥哈希。它已经在 Facebook 门户中。它与错误消息中的键不同。 使用发布证书发布你的应用并运行sn-p,它将显示发布证书的哈希 如果我尝试通过 android studio 运行应用程序,它会使用调试密钥库(它会从 google play 卸载我的应用程序并安装一个新应用程序)。如果我从 google play 运行应用程序,我会在哪里看到日志消息? 不,你不会。您需要将代码 sn-p 添加到您的项目中,使用发布证书发布一个新的 apk,将 APK 复制到您的设备并安装它。然后将您的手机连接到您的计算机,运行应用程序并检查日志输出 有效!问题是当我将密钥哈希复制到 facebook 门户时,我写了字母 I (i) 而不是 l (L)

以上是关于无效的密钥哈希 - android facebook的主要内容,如果未能解决你的问题,请参考以下文章

Android Facebook 4.0.1 无效密钥哈希错误

Android Facebook 与无效密钥哈希的集成

Phonegap Facebook 插件 - 从 Android 设备中删除应用程序后密钥哈希无效

带有 Cordova 的 Facebook 的 Android 密钥哈希

Cordova facebook 插件无效的密钥哈希

Marvel API 调用中的哈希、时间戳和密钥组合无效