ChatGPT解决这个技术问题 Extra ChatGPT

此应用未配置 Android 密钥哈希。 - 使用 Facebook SDK 登录

我在我的应用程序中使用 facebook 帐户登录时遇到问题。我读到 Facebook Doc。我作为 Facebook Doc 完成了所有步骤。

首先在应用程序中使用 facebook 帐户登录 - 成功!而不是在应用程序中注销。我想用我的 facebook 帐户再次登录。但不工作!我拿了这个例外!请帮我 !

例外:此应用未配置 Android 密钥哈希。在 http:developers.facebook.com/apps/“APP ID”配置您的应用密钥哈希

最后;我曾经使用过 HashKey Genarate 的部分代码

 try {
        PackageInfo info =     getPackageManager().getPackageInfo("MY PACKAGE NAME",     PackageManager.GET_SIGNATURES);
        for (android.content.pm.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) {
}

我解决了我的问题。我应该在 Facebook 上完成设置。脚步 :

转到 facebook 开发者页面:https://developers.facebook.com/ 打开应用程序选项卡,然后单击设置 在 HashKey 的字段上粘贴生成哈希键 = 如果您还没有,请获取您的密钥哈希部分代码和比单点登录将是“是”:单点登录:启用此设置。

我想分享我的决心。也许有人需要这个解决方案。祝你好运 !

谢谢-您帮助了我,我遇到了同样的问题+1
Facebook 现在提供了非常好的快速入门说明如何生成哈希,在您单击设置按钮并添加新平台后:对于 Mac:keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 对于 Windows:keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
你是如何解决这个问题的?
您应该将解决方案发布为答案,并将其标记为答案。这将停止将此问题显示为未回答。
这将在调试或开发模式下生成,还是在登录应用程序时也可用于生产。我可以毫无错误地登录该应用程序。现在它显示了我的测试人员帐户的密钥哈希错误。如果我为所有其他用户切换到实时模式,也会发生同样的情况。

A
Ahmed Ashour

您无需生成散列密钥。当您尝试从您的应用程序访问 facebook 时,您将收到一条错误消息,指出未注册或配置以下“[Hash Key]”。只需复制该密钥并转到 developer.facebook.com,您已在其中注册了您的应用程序以进行 Facebook 验证并包含在密钥哈希下。

请记住:对于每个设备,哈希键可能不同。你需要新鲜地包括它。

默认情况下,此键应执行以下操作:2jmj7l5rSw0yVb/vlWAYkK/YBwk=

此外,在一切之前,您需要向 facebook 提供您的应用程序详细信息,以及您在哪里使用 facebook 功能的屏幕截图以及您使用的原因。他们需要验证这一点。


感谢 Nielarshi 的回答。但我用另一种方式解决了。
@TarıkYurtlu 这是什么?我已经注册了哈希键,但它没有用。如果我卸载 facebook 应用程序,它将起作用。我应该注册发布申请还是我们可以为开发而注册?
老线程,但是......每个“签名的apk版本”的密钥不是不同的,而不是每个设备的密钥不同吗?当然,如果它适用于每个设备,那么没有人能够使用它。提示他人:您上传的签名版本与您刚开发时使用的哈希密钥不同。虽然您可以在 facebook 中添加多个哈希键,但应该不是问题。当您使用另一个签名密钥时,哈希值就会改变。
E
Evan Lévesque

要生成发布密钥的哈希,请在 Mac 或 Windows 上运行以下命令,替换您的发布密钥别名和密钥库的路径。在 OS X 上,运行:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

在 Windows 上,使用:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64


参考:https://developers.facebook.com/docs/android/getting-started/#create_hash


我的应用程序中已经有了 SHA 密钥库。我是否也需要在 facebook 中添加该密钥?
k
kip2

如果您还没有发布您的应用程序并且只想使用调试版本哈希,您可以使用以下命令从您的调试密钥库中获取它:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

更多关于this related SO post


R
Robert Pal

有一种简单的方法可以获取您的 Hash Key。

只需在 onCreate 方法的主 .kt 文件中放入以下几行:

FacebookSdk.sdkInitialize(this)
println("Facebook hash key: ${FacebookSdk.getApplicationSignature(this)}")

然后将结果复制到 facebook 开发者网站。有时结果在生成的字符串末尾没有等号 (=)。如果是,请手动添加。


A
Ahmed Ashour
# Get all Hash Expo  
expo fetch:android:hashes