Mik*_*ine 33 android facebook facebook-javascript-sdk
我正在构建一个用户可以使用Facebook登录的应用程序.
我已经创建了如下的哈希键:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.app.package",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
Base64.DEFAULT));
Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
Base64.DEFAULT), Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Run Code Online (Sandbox Code Playgroud)
在调试模式下,一切运行良好.
当我导出项目以供发布时,它会出现以下错误:
"Invalid key hash. The key hash ****************** does not match any stored key hashes"
Run Code Online (Sandbox Code Playgroud)
我粘贴了Facebook Developer仪表板中打印的密钥,但应用程序仍然给我错误.
我的行为的完整包是" com.app.package.views",我试图在仪表板中使用此包(作为Google Play包名称),但没有任何改变.
我该如何解决?如何生成正确的发布密钥哈希?
Abh*_*bhi 48
您按照Facebook提供的步骤创建登录应用程序?
您需要从发布密钥库开始获得"生产密钥":
从命令行:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
并在Facebook应用页面选项上添加此密钥.
更多信息:https://developers.facebook.com/docs/android/getting-started/
Rah*_*mov 39
我找到了解决方案.对于MAC
使用这个获得YOUR_RELEASE_KEY_ALIAS:
keytool -list -keystore /Users/***/Documents/keystore/***.jks
Run Code Online (Sandbox Code Playgroud)
这一个让你的发布keyhash:
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
这个对我有用.
小智 30
最简单的解决方案.
1)签署你的Apk.
2)将您的设备连接到计算机并在真实设备上安装已签名的apk.
3)当按下facebook登录时,您将收到一条错误消息"无效的密钥散列.密钥散列"xxx"与您的logcat上的任何存储的密钥...."不匹配.
4)复制logcat Hash Key并将此密钥放到developers.facebook.com/apps/104...../settings/
我们需要用openssl结构中的一个文件的路径替换"openssl"这个词.
所以,My CMD命令是:
C:\Program Files\Java\jre1.8.0_45\bin>keytool -exportcert -alias Informatheus -keystore C:\Users\Atendimento\Dropbox\AndroidKeystore\Keystore | C:\Users\Atendimento\Desktop\openssl\bin\openssl sha1 -binary | C:\Users\Atendimento\Desktop\openssl\bin\openssl base64
Run Code Online (Sandbox Code Playgroud)
有效.
小智 7
2021 年 7 月:如果您的应用程序已发布,请在 Google Console 中查找密钥
Google Play Consolez-> 左侧菜单Release-> Setup-> App Integrity-> Upload key certificate->SHA-1 certificate fingerprint
将十六进制转换为 base64: https://base64.guru/converter/encode/hex
在 Facebook 中添加密钥:Add your development and release key hashes
// 将此方法添加到您的第一个活动并打开日志并搜索 Base64 标签 这是哈希键,我希望它有所帮助
public void getHashkey(){
try {
PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("Base64", Base64.encodeToString(md.digest(),Base64.NO_WRAP));
}
} catch (PackageManager.NameNotFoundException e) {
Log.d("Name not found", e.getMessage(), e);
} catch (NoSuchAlgorithmException e) {
Log.d("Error", e.getMessage(), e);
}
}
Run Code Online (Sandbox Code Playgroud)
Facebook SDK 使用两种不同的密钥,一种是 Debug 密钥,您可以在开发阶段使用,另一种是 Release 密钥,在创建签名的应用程序包后使用。这是有关如何创建调试和发布密钥的链接。
另请查看此帖子。
| 归档时间: |
|
| 查看次数: |
62997 次 |
| 最近记录: |