Cordova Android Facebook登录生成无效的Android密钥参数

Cordova Android Facebook登录生成无效的Android密钥参数,android,facebook,cordova,keystore,Android,Facebook,Cordova,Keystore,我正在从事一个整合Facebook SDK的Cordova项目 我正在使用Cordova 2.9和Android Facebook SDK 3.5.2 我通过Android SDK版本的Eclipse创建了自己的密钥库,并成功地将其用于向客户端提供发布版本 Facebook应用程序为Android启用了SSO,可以公开使用,我还生成了我的哈希,并将其包含在相关设置部分 直到今天,一切都很顺利 我的客户已经向我提供了他们自己的密钥库,用于签署和构建APK并发布给他们 我使用Eclipse导出And

我正在从事一个整合Facebook SDK的Cordova项目

我正在使用Cordova 2.9和Android Facebook SDK 3.5.2

我通过Android SDK版本的Eclipse创建了自己的密钥库,并成功地将其用于向客户端提供发布版本

Facebook应用程序为Android启用了SSO,可以公开使用,我还生成了我的哈希,并将其包含在相关设置部分

直到今天,一切都很顺利

我的客户已经向我提供了他们自己的密钥库,用于签署和构建APK并发布给他们

我使用Eclipse导出Android项目并选择它们新提供的密钥库。应用程序成功导出,我可以将其推送到测试设备上

现在,当我尝试通过Facebook登录时,你不能通过任何其他途径进入应用程序,Facebook登录对话框出现,我输入我的凭据,但我收到一个Facebook错误,说明我提供的密钥与任何允许的密钥不匹配

显示的密钥不是我识别的密钥,因为我一直使用同一台机器进行开发,并且之前使用第4节中描述的技术生成了密钥哈希:

我可以使用客户端提供的密钥来签署和发布他们的应用程序吗

既然我已经开始使用客户端的密钥存储,为什么错误消息中会报告未知哈希


如果您有任何想法,我们将不胜感激。

我认为问题不在于将新签名密钥的哈希添加到Facebook控制台。我相信您已经为Eclipse自动生成的调试密钥完成了这项工作,如Facebook入门指南中所述。只需为新密钥存储库(即客户端的密钥存储库)生成密钥哈希

keytool-exportcert-alias yourkey-keystore path_to_your_new_keystore | openssl sha1-binary | openssl base64

然后在android支持的密钥哈希部分将哈希添加到Facebook控制台。希望这有助于解决您的问题

更新 对于另一种方法(read=>bit cumber),请遵循以下步骤

1.在您的主要活动或应用程序中使用以下代码

// DO NOT FORGET TO REMOVE
PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} 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());
}
// DO NOT FORGET TO REMOVE
代码取自—

2.将项目导出为已签名的apk。选择新的密钥库和别名

3.将apk安装到设备上

4.等待日志消息出现,从logcat控制台复制密钥散列

5.在Facebook web仪表板的Android密钥哈希部分下添加另一个密钥哈希

6.删除上述代码,重新生成已签名的apk。在设备上试用并访问facebook登录


这种替代方法肯定有效。希望这有帮助

这个问题听起来有点太抽象了。你能详细解释一下你的问题吗?步骤、错误和之前对你有用的东西?啊,更清楚了。谢谢它仍然没有生成与错误中相同的密钥。生成密钥的人是否需要在生成密钥时从同一台机器生成他们的Facebook密钥散列?不,不应该是这样,因为你有密钥库和密码。它应该提示输入密码。无论如何,我已经用另一个选项更新了答案