带有 Cordova 的 Facebook 的 Android 密钥哈希
Posted
技术标签:
【中文标题】带有 Cordova 的 Facebook 的 Android 密钥哈希【英文标题】:Android Key Hash for Facebook with Cordova 【发布时间】:2015-05-10 13:32:22 【问题描述】:我正在使用 Meteor 和 Cordova 开发一个混合应用程序。我正在尝试配置 Facebook Connect 并让它在 ios 上运行,但我被困在 android 上。我似乎找不到正确的密钥哈希。 我总是收到消息:
无效的密钥哈希。密钥哈希...与任何存储的密钥哈希都不匹配。
我已经尝试通过以下命令找到正确的密钥哈希:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
和标准密码“android”。我将生成的密钥添加到 Facebook,但没有帮助。我还在以下post 中尝试了该工具。它给了我另一个也没用的钥匙。有什么想法吗?
【问题讨论】:
【参考方案1】:Meteor 在通过meteor run android-device 创建安卓应用时使用自己的调试密钥库。 密钥库位于 ~/.meteor/android_bundle/.android/debug.keystore。
使用以下代码和密钥库密码android 来创建您的密钥哈希:
keytool -exportcert -alias androiddebugkey -keystore \
~/.meteor/android_bundle/.android/debug.keystore | openssl sha1 -binary | openssl base64
【讨论】:
【参考方案2】:我遇到了同样的问题,只需将错误消息上的密钥放在 FB 设置上。它奏效了。
【讨论】:
很难区分该消息中的某些字符,例如L / I, O / 0.
不能尝试所有组合。
无法从本机流程中复制/粘贴。这就是首先提出这个问题的原因。
我不明白你的意思。在 windows cmd 行或 linux 中,您会收到错误,您只需复制粘贴密钥【参考方案3】:
Facebook keyhash 与您的应用程序的包名称和密钥库一起使用。
使用生产密钥库对您的 apk 进行签名,并使用以下代码获取 facbook 密钥哈希
try
PackageInfo info = getPackageManager().getPackageInfo("your package", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
catch (NameNotFoundException e)
catch (NoSuchAlgorithmException e)
facebook Keyhash 将以 '=' 等于符号开头。 出于测试目的,您可以同时拥有来自调试密钥库和生产密钥库的密钥哈希。
更多信息请见here。
【讨论】:
我正在创建一个 Cordova 应用程序,就像我说的那样,所以我真的不知道将您提议的 Java 代码放在哪里。必须有不使用自定义代码的解决方案? 该帖子明确指出这是一个 Cordova 问题,尽管代码 sn-p 确实有效,但由于没有解释如何将其放入 Cordova 项目而被否决。以上是关于带有 Cordova 的 Facebook 的 Android 密钥哈希的主要内容,如果未能解决你的问题,请参考以下文章
带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)
更改权限后无法在 Cordova iOS 上使用 Facebook SDK 登录