如何解决Facebook登录实现-Android为“调试”和“发布”环境生成无效的密钥哈希,如何解决此问题?
我想分享一下我在StackOverflow上找不到的信息。我将分享我到目前为止所做的事情以及从未有过的输出。
我所做的事情:
- 遵循FB登录实施文档,并添加了我的LoginActivity以用于来自Facebook SDK的默认深层链接交易。
- 我创建了调试键哈希,并从CLI中获得了异常的哈希键,如下图所示。在您可能在那里看到的图像中,
=
丢失了。 - 在实现Facebook的登录API时,我无法使用此密钥哈希。它说密钥哈希必须以
=
字符结尾。参考:在下面的这张图片中。
我的release
哈希键也发生了同样的事情。那么我该如何摆脱这种问题呢?
解决方法
如果您有ssl执行器,请尝试此
keytool -exportcert -alias androiddebugkey
-keystore "$PATH\debug.keystore" | "$OPENSSL_PATH\bin\openssl" sha1 -binary |"$OPENSSL_PATH\bin\openssl" base64
}
替代:
步骤1
转到http://tomeko.net/online_tools/hex_to_base64.php
步骤2
在第一个字段中粘贴SHA-1
步骤3
在“输出(base64)”下的输入字段中复制文本
步骤4
现在打开developer.facebook.com/apps 点击您的应用 在左侧导航到“设置”->“基本” 在关键哈希下跳过了Base64文本
,这是获取SHA-1密钥的最快方法。请按照以下步骤操作。
- 打开Android Studio
- 打开您的项目
- 单击Gradle(在右侧面板中,您将看到Gradle Bar)
- 单击刷新(从Gradle Bar单击刷新,您将看到列出项目的Gradle脚本)
- 单击您的项目(您的项目名称表单列表(根))
- 单击任务
- 点击Android
- 双击signingReport(在运行栏中您将获得SHA1和MD5(有时将在Gradle控制台中)
示例
从模块选择下拉列表中选择应用程序模块以运行或调试您的应用程序
然后在活动的onCreate中调用以下函数
或
在应用程序中,以下代码生成哈希密钥。然后运行您的应用,您可以在logcat中检查哈希键。
fun generateHashKey(context: Context){
try {
val info = context.packageManager.getPackageInfo(context.packageName,PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.getEncoder().encode(md.digest()))
Log.i("AppLog","key:$hashKey=")
}
} catch (e: Exception) {
Log.e("AppLog","error:",e)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。