【问题标题】:Getting error invalid key hash even though i put that key hash in Facebook (hash keys added in Facebook settings)即使我将该密钥哈希放在 Facebook 中,也会出现错误无效的密钥哈希(在 Facebook 设置中添加的哈希密钥)
【发布时间】:2018-01-06 01:48:47
【问题描述】:

我正在制作一个 android 应用程序,用户可以在其中使用 Facebook 登录(通过 Firebase 通过 FirebaseUI)。我是 android 开发和 Facebook android 身份验证的新手。用电子邮件、gmail 和 twitter 登录都可以,但用 Facebook 登录不行,因为我需要这个哈希键...

当我设置 Facebook 身份验证并单击使用 Facebook 登录时,我收到以下错误。

Invalid key hash. The key hash `[keyhash1=]` does not match any stored key hashes. Configure your app key hashes at https://developers.facebook.com/apps/[app id].

请注意,它们显示的 [keyhash1=] 与我在命令行中运行此 [keyhash2=] 时获得的密钥哈希不同:

keytool -exportcert -alias androiddebugkey -keystore [my name]\.android\debug.keystore | “C:\Users\[my name]\openssl\bin\openssl” sha1 -binary | “C:\Users\[my name]\openssl\bin\openssl” base64

当我将 debug.keystore 文件放入这个很酷的程序中以获取 Facebook 的哈希键 (https://www.androidfilehost.com/?fid=95864024717072835) 时,我也得到了相同的哈希键 [keyhash2=]。所以我得到的钥匙一定是好的……

所以我输入https://developers.facebook.com/apps/[my app id]/settings/ 哈希键[keyhash2=] 仍然出现上述错误。我什至放了两个哈希键,一个是我用 cmd 得到的,一个是我在错误中看到的(包括 = 符号),但我仍然有同样的错误。有谁知道为什么?

我还在 facebook 中看到它被命名为 key hash,而在 cmd 中它被命名为 hash key。应该是一样的吧……

【问题讨论】:

  • 对我来说,问题在于生成的哈希密钥是错误的,因为密钥库文件 (.jks) 位于该文件夹名称包含空格的文件夹中(因此路径将包含空格)。

标签: android firebase firebase-authentication firebaseui facebook-authentication


【解决方案1】:

解决方法:1.从windows生成的key不正确,要么使用FB在错误中使用的key hash,要么得到相同的key hash使用我粘贴在下面的代码 + 2. 如果您使用 Firebase,则需要从 Firebase 引入 OAuth 重定向 URI(转到您的 Firebase 项目,然后是身份验证、登录方法,然后是 Facebook,然后您会发现有这个网址)。然后转到developers.facebook.com到您的帐户,然后添加新产品,然后选择Facebook登录,在此处添加您的Firebase链接并设置嵌入式浏览器OAuth登录(非常重要-这就是失败的原因对我来说)

private void printKeyHash() {
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo("**YOUR PACKAGE NAME**", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.e("KeyHash:", e.toString());
    } catch (NoSuchAlgorithmException e) {
        Log.e("KeyHash:", e.toString());
    }
}

不要忘记从 MainActivity 类中调用 printKeyHash()。然后您的代码将显示在 adb logcat 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多