我在我的安卓应用程序中使用firebase登录Facebook后收到了这个错误。验证失败:com.google.firebase.FirebaseExeption:发生内部错误。包名和签名证书指纹不匹配。我在我的firebase控制台上有一个sha指纹和正确的包名。我已经上传了应用程序到Beta测试,我想我需要一个释放sha密钥。但我不知道如何创建它。有人帮忙吗?
eeq64g8w1#
我找到了答案。我不得不使用以下命令:
keytool -exportcert -alias androiddebugkey -keystore ~/YOUR/PATH/TO/KEYSTORE -list -v
并将KEYSTORE路径设置为项目中的**.jdk**文件。(The创建签名APK时生成.jdk文件)
我是这么做的说明:**第一步:**在终端窗口(Mac)中键入此命令以生成debug.keystore
第一个月
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias创建.jdk文件后,你可以为facebook创建一个release hash。
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
第三个:在终端中键入:
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
ikfrs5lh2#
1.终点站
如果您使用的是Windows,并且没有openSSL下载Open SSL:https://slproweb.com/products/Win32OpenSSL.html安装后,确保在environment变量中添加了路径。在终端中运行以下命令。
environment
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
别名:别名的名称(例如Android、发布、调试)密钥库文件路径:密钥库的名称(如果您位于同一目录或完整路径中
2. Google Play游戏主机
如果您的应用已经在Play Store上,您可以:1.转到Release Management1.在Release Management中选择App Signing1.您可以看到十六进制格式App signing certificate的SHA1密钥。1.复制十六进制格式的SHA1并将其转换为base64格式,您可以使用此链接http://tomeko.net/online_tools/hex_to_base64.php来完成此操作,而无需十六进制的SHA1:部分。1.转到Facebook开发者控制台并在settings —> basic –> key hashes中添加密钥(转换为64进制后)。
Release Management
App Signing
App signing certificate
SHA1:
settings —> basic –> key hashes
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()); }
2条答案
按热度按时间eeq64g8w1#
我找到了答案。
我不得不使用以下命令:
并将KEYSTORE路径设置为项目中的**.jdk**文件。
(The创建签名APK时生成.jdk文件)
我是这么做的
说明:
**第一步:**在终端窗口(Mac)中键入此命令以生成debug.keystore
第一个月
第二个:在检索哈希密钥以进行发布之前,我们需要创建一个**.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。
第三个:在终端中键入:
将YOUR_RELEASE_KEY_ALIAS更改为您为**.jdk文件指定的别名,并将“YOUR_RELEASE_KEY_PATH”设置为.jdk文件**的目标。~/应用程序/我的应用程序/我的应用程序.jdk
最后,它可能看起来像这样:
ikfrs5lh2#
1.终点站
如果您使用的是Windows,并且没有openSSL下载Open SSL:https://slproweb.com/products/Win32OpenSSL.html
安装后,确保在
environment
变量中添加了路径。在终端中运行以下命令。
别名:别名的名称(例如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.直接从应用程序(您的应用程序必须通过调试生成或通过密钥库文件发布)
将以下代码放入启动页或主页