Firebase Android -如何生成Facebook哈希密钥,包名和签名证书指纹不匹配

ct3nt3jp  于 2022-12-24  发布在  Android
关注(0)|答案(2)|浏览(143)

我在我的安卓应用程序中使用firebase登录Facebook后收到了这个错误。
验证失败:com.google.firebase.FirebaseExeption:发生内部错误。
包名和签名证书指纹不匹配。
我在我的firebase控制台上有一个sha指纹和正确的包名。我已经上传了应用程序到Beta测试,我想我需要一个释放sha密钥。但我不知道如何创建它。
有人帮忙吗?

eeq64g8w

eeq64g8w1#

我找到了答案。
我不得不使用以下命令:

keytool -exportcert -alias androiddebugkey -keystore ~/YOUR/PATH/TO/KEYSTORE -list -v

并将KEYSTORE路径设置为项目中的**.jdk**文件。
(The创建签名APK时生成.jdk文件)

我是这么做的
说明:
**第一步:**在终端窗口(Mac)中键入此命令以生成debug.keystore

第一个月

  • 我建议你不要改变化名。
  • 使用“android”作为密码。
  • 将debug.keystore文件保留在.android文件夹中
    第二个:在检索哈希密钥以进行发布之前,我们需要创建一个**.jdk文件。您可以通过Android Studio -〉“Build”-tab -〉“Generate signed APK”来执行此操作。或者,如果您正在开发Cordova应用**,您可以通过在项目目录中键入以下内容来创建一个**.jdk**文件:

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
创建.jdk文件后,你可以为facebook创建一个release hash

第三个:在终端中键入:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

YOUR_RELEASE_KEY_ALIAS更改为您为**.jdk文件指定的别名,并将“YOUR_RELEASE_KEY_PATH”设置为.jdk文件**的目标。~/应用程序/我的应用程序/我的应用程序.jdk
最后,它可能看起来像这样:

keytool -exportcert -alias myApp -keystore ~/apps/myApp/myApp.jdk | openssl sha1 -binary | openssl base64
ikfrs5lh

ikfrs5lh2#

1.终点站

如果您使用的是Windows,并且没有openSSL下载Open SSL:https://slproweb.com/products/Win32OpenSSL.html
安装后,确保在environment变量中添加了路径。
在终端中运行以下命令。

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

别名:别名的名称(例如Android、发布、调试)密钥库文件路径:密钥库的名称(如果您位于同一目录或完整路径中

2. Google Play游戏主机

如果您的应用已经在Play Store上,您可以:
1.转到Release Management
1.在Release Management中选择App Signing
1.您可以看到十六进制格式App signing certificate的SHA1密钥。
1.复制十六进制格式的SHA1并将其转换为base64格式,您可以使用此链接http://tomeko.net/online_tools/hex_to_base64.php来完成此操作,而无需十六进制的SHA1:部分。
1.转到Facebook开发者控制台并在settings —> basic –> key hashes中添加密钥(转换为64进制后)。

3.直接从应用程序(您的应用程序必须通过调试生成或通过密钥库文件发布)

将以下代码放入启动页或主页

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

相关问题