Facebook SDK for Android - 示例应用程序将无法正常工作

Joa*_*rom 5 android facebook

哦,我做了所有的事情,按照所有步骤,但仍然无法让它工作.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 -keystore"C:\ Users\JoeZ.android\debug.keystore"|"C:\ Users\xxx \下载\ openssl-0.9.8k_X64\bin\openssl.exe"sha1 -binary |"C:\ Users\xxx\Downloads\openssl-0.9.8k_X64\bin\openssl.exe"base64

我得到了一个很好的密钥,我插入到Facebook的Android Key Hash框中,我在输出后尝试了有或没有=符号,但似乎没有任何效果.

当我尝试登录Example应用程序时,我只是得到invalid_key.我甚至尝试过签名的应用程序,但它没有用.如果我没弄错,在Example应用程序中写的唯一的东西是我的APP_ID,对吧?

我正在开发我自己的应用程序时遇到完全相同的问题.那么请有人帮助我吗?

Kor*_*rbi 15

如果keytool命令对你不起作用,我找到了解决这个问题的方法:你可以在Facebook Developer部分中反向设计将哪个键作为Key Hash.在您的Activity中,只需执行以下操作即可打印出Key Hash:

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) {

}
Run Code Online (Sandbox Code Playgroud)

这对我有用.MessageDigest类包含在JDK中.Base64类没有.例如,你可以使用这个.


Mat*_*adt 5

我遇到了类似的问题.对我来说,当我卸载Facebook应用程序的最新更新并且现在只有原生Facebook应用程序v1.2时,它已得到解决.(意思是,当我进入市场并搜索Facebook时,"Facebook for Android"将在我的设备上显示为"未安装").

在我的Nexus One(Android 2.2.1)上,当我安装了最新的Facebook应用程序时,没有"卸载应用程序",只有"卸载最新更新",这就是我所做的.事实上,我甚至无法卸载整个Facebook(现在的v1.2)应用程序,无论出于何种原因,卸载按钮被禁用/灰显.但在这种状态下,样本似乎有效.

至少,我可以通过这种方式使用简单的流应用程序.

编辑/解决方案:

好的,我现在就开始工作了.我发现我复制/粘贴了错误的密钥哈希,因为Windows下的keytool有一些奇怪的行为,而Facebook SDK的自述文件中的命令语法错误.

要使用的参数应为" keytool -export ..."而不是" keytool -exportcert ..."; 如果你确实使用了第二个/错误的参数,keytool仍然会打印出一个哈希键(尽管没有要求任何密钥密码),但哈希是错误的.

现在我也让SSO工作了.

这是我在windows上的调用:

keytool -export -alias androiddebugkey -keystore "C:\Documents and Settings\myuser\.android\debug.keystore" | openssl sha1 -binary | openssl enc -a -e
Run Code Online (Sandbox Code Playgroud)