Facebook登录实现-Android为“调试”和“发布”环境生成无效的密钥哈希,如何解决此问题?

问题描述

我想分享一下我在StackOverflow上找不到的信息。我将分享我到目前为止所做的事情以及从未有过的输出。

我所做的事情:

  1. 遵循FB登录实施文档,并添加了我的LoginActivity以用于来自Facebook SDK的默认深层链接交易。
  2. 我创建了调试键哈希,并从CLI中获得了异常的哈希键,如下图所示。在您可能在那里看到的图像中,=丢失了。

    generating the debug hash

  3. 在实现Facebook的登录API时,我无法使用此密钥哈希。它说密钥哈希必须以=字符结尾。参考:在下面的这张图片中。

    enter image description here

我的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密钥的最快方法。请按照以下步骤操作。

  1. 打开Android Studio
  2. 打开您的项目
  3. 单击Gradle(在右侧面板中,您将看到Gradle Bar)
  4. 单击刷新(从Gradle Bar单击刷新,您将看到列出项目的Gradle脚本)
  5. 单击您的项目(您的项目名称表单列表(根))
  6. 单击任务
  7. 点击Android
  8. 双击signingReport(在运行栏中您将获得SHA1和MD5(有时将在Gradle控制台中)

示例

enter image description here 从模块选择下拉列表中选择应用程序模块以运行或调试您的应用程序

然后在活动的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)
    }

}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...