Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序配置错误,无法使用释放密钥哈希登录Facebook_Android_Facebook - Fatal编程技术网

Android 应用程序配置错误,无法使用释放密钥哈希登录Facebook

Android 应用程序配置错误,无法使用释放密钥哈希登录Facebook,android,facebook,Android,Facebook,我已将Facebook整合到我的应用程序中。我用调试密钥哈希在emulator和我的设备HTC中测试了我的应用程序。当我为我的签名APK尝试释放密钥哈希时,我的设备HTC One X中总是出现“应用程序在Facebook登录时配置错误”错误 keytool-exportcert-alias android-keystore C:\android2012\android.keystore | openssl sha1-binary | openssl base64 我使用上述命令生成释放密钥散列。

我已将Facebook整合到我的应用程序中。我用调试密钥哈希在emulator和我的设备HTC中测试了我的应用程序。当我为我的签名APK尝试释放密钥哈希时,我的设备HTC One X中总是出现“应用程序在Facebook登录时配置错误”错误

keytool-exportcert-alias android-keystore C:\android2012\android.keystore | openssl sha1-binary | openssl base64

我使用上述命令生成释放密钥散列。别名是“android”。它在输入密码后成功生成密钥哈希。这个密钥散列被输入到Facebook仪表板,我试图在我的签名APK中访问,但失败了


有人能帮忙吗?这一错误持续了几天。非常感谢

为什么在您测试它时它可以在模拟器上工作,甚至在设备上工作,是因为在从eclipse进行测试时,您使用的是debug.keystore而不是发布密钥

按照下面两种解决方案中的一种去做,你就可以开始了

解决方案1:

请尝试此链接:。我发现使用Facebook的方法获取散列密钥并不总是像广告宣传的那样有效。然而,这个链接有一种不同的获取散列键的方法,并且几乎总是有效的

解决方案2:

也就是说,我总是发现最简单的事情就是,让Facebook SDK告诉你你的哈希键是什么。这要简单得多,不会超过几分钟

步骤1: 在Facebook SDK中,找到Util.java类。在这种情况下,请更改以下内容:

private static boolean ENABLE_LOG = false;
致:

步骤2: 创建一个新的签名APK,传输到您的设备并安装。如果已经安装,自然会提示


步骤3:在DDMS(Logcat)运行且设备连接到计算机的情况下,运行应用程序并继续查找密钥不匹配警告。该警告具有实际的哈希键。复制该密钥,转到您的Facebook开发者页面,并将新密钥添加到列表中。

我被困在这个问题上大约一周了!我想为我自己的密钥库而不是debug.keystore生成哈希键。我在网上尝试了所有可能的解决方案

我终于有了一个奇怪的理解:

keytool-exportcert-alias androiddebugkey-keystore[PATH_TO_keystore]\debug.keystore |[PATH_TO_OPENSSL]\OPENSSL sha1-binary |[PATH_TO_OPENSSL]\OPENSSL base64

使用这种方法,我被要求输入密码,并收到一个哈希键(错误的)

第二种方法分三步提出

keytool-exportcert-alias androiddebugkey-keystore[PATH_TO_keystore]\debug.keystore>[PATH_TO_OPENSSL]\debug.txt [PATH_TO_OPENSSL]\OPENSSL sha1-binary[PATH_TO_OPENSSL]\debug.txt>[PATH_TO_OPENSSL]\bin\debug_sha.txt [PATH\u TO\u OPENSSL]\OPENSSL base64-in[PATH\u TO\u OPENSSL]\bin\debug\u sha.txt>[PATH\u TO\u OPENSSL]\bin\debug\u base64.txt

使用这种方法,我还被要求输入密码,并收到一个不同的哈希键=正确的一个


请注意,将别名替换为“androiddebugkey”,将密钥库替换为“debug.keystore”

出现此问题可能是因为我们使用的是“openssl-0.9.8k”版本。尝试从以下链接使用不同版本的“openssl-0.9.8e”或“openssl-0.9.8d”:


这个问题不会出现。

Siddharth的解决方案2有时在Facebook SDK 3.0以后的版本中不可能实现。 使用下面的代码在你的应用程序本身中toast右键散列

try {
            PackageInfo info =     getPackageManager().getPackageInfo("com.package.mypackage",     PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("MY KEY HASH:", sign);
                Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
            }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

用您的包名替换com.package.mypackage…

我已经有两个月的这个问题了。我的密钥哈希值一直挂接到9。今天我终于找到了简单的解决方案:

第1步:

在手机上安装从facebook开发者页面下载的facebook sdk。不要安装普通的facebook应用程序。确保你可以登录facebook。然后注销

第二步:

将应用程序与最终发布密钥导出为apk,就像将其上载到playstore时一样

第三步:

通过usb电缆或U盘将Apk文件放在手机上

第4步:

使用文件管理器安装应用程序:例如

第五步:

启动你的应用程序并尝试登录facebook。将打开一个对话框,告诉您:“在facebook开发者控制台中找不到密钥

第6步:

写下钥匙

第7步:

将其放入您的facebook开发者控制台并保存。现在您完成了。任何下载您的应用程序(使用以前使用的密钥库发布)的人都可以登录facebook


享受

要获取openssl路径,请执行以下步骤:

  • 在zip中下载适用于windows的“openssl”
  • 在您想要的路径中提取zip
  • 获取zip中“bin”文件夹的路径
  • 就这样


    @user1808006:很高兴能帮上忙。:-@Niravsha:我很高兴它很有用。:-)布尔值在Util.java中不存在。也许最近有所改变?@billynomates:我相信从3.X Beta SDK开始就有了。我还没有尝试过新的版本。但是随着7月21日强制更新的到来,我应该很快就知道了。我确信他们在那里留下了一些东西。我必须找到它。我会尽快更新。解决方案1非常完美!!非常感谢!
    try {
                PackageInfo info =     getPackageManager().getPackageInfo("com.package.mypackage",     PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                    Log.e("MY KEY HASH:", sign);
                    Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
                }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }