好吧,我已经完成了所有业务,遵循了所有步骤,但仍然无法让它发挥作用。
Facebook SDK 附带的简单示例应用程序可在模拟器和 Android 1.5 设备上运行。
所以我的猜测是单一登录的事情。
如果我是对的,那么我应该生成一个密钥哈希,并且我被告知正确的调试密钥库位于
C:\Users\xxx.android\debug.keystore
所以我按照教程进行了操作。
从 google.code 下载 OpenSSL 并在终端中编写如下内容:
“C:\ Program Files \ Java \ jdk1.6.0_22 \ bin \ keytool.exe”-exportcert -alias
androiddebugkey-密钥库
“C:\ Users \ JoeZ.android \ debug.keystore”|“C:\ Users \ xxx \ Downloads \ openssl-0.9.8k_X64 \ bin \ openssl.exe”
沙1
-binary|“C:\Users\xxx\Downloads\openssl-0.9.8k_X64\bin\openssl.exe”base64
我得到了一个很好的密钥,我将其插入到 facebook 中的 Android Key Hash 框中,我已经尝试过在输出后带或不带 = 符号,但似乎没有任何效果。
当我尝试登录示例应用程序时,我只是得到 invalid_key 。
我什至尝试了签名的应用程序,但它不起作用。
如果我没有记错的话,示例应用程序中唯一要写的就是我的 APP_ID,对吧?
我正在开发的自己的应用程序也遇到了完全相同的问题。那么请问有人可以帮助我吗?
如果 keytool 命令对你不起作用,我找到了解决这个问题的方法:你可以对哪个密钥进行逆向工程,将哪个密钥作为密钥哈希放入 Facebook 开发人员部分。在您的活动中,只需通过执行以下操作打印出密钥哈希:
try {
PackageInfo info = getPackageManager().getPackageInfo("[your package name, e.g. com.yourcompany.yourapp]", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("Hash Key:", Base64.encode(md.digest()));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
这对我有用。 MessageDigest 类包含在 JDK 中。 Base64 类则不然。您可以使用this one http://iharder.sourceforge.net/current/java/base64/例如。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)