Android 中的 Facebook API 需要使用哪个密码生成散列密钥?

Which password need to generate hash key for Facebook API in Android?

通过 Getting Started FaceBook API 后,我在 Android 应用程序中按下登录按钮后收到一条错误消息:

无效的密钥散列。密钥散列不匹配..

None 的现有 SO 接受答案很有用。

生成哈希值时应该填写哪个密码?或者任意密码就可以了?

我也尝试将错误消息中的哈希键填入 Facebook 站点,但没有帮助。

我正在使用 mac。

获取由以下代码生成的 keyhash 并将该 keyhash 放入您的 facebook 应用程序,在您的登录中调用此方法 Activity 并从 Logcat.

获取 keyhash
 try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "packagename",
                PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

 }

您使用哪个 OS? 如果您使用 windows:

  1. 转到您的 jdk/bin 文件夹(通常在程序文件中)。
  2. 复制路径。
  3. 输入命令。
  4. 输入:cd {此处粘贴路径}。
  5. 在您的计算机中搜索您的 .android 文件夹(通常在 C:\Users\name)
  6. 复制路径。
  7. 现在,在 cmd 中输入:

keytool -exportcert -alias androiddebugkey -keystore {path from 6}.android\debug.keystore | openssl sha1 -binary | openssl base64

  1. 密码:android
  2. 复制代码并在 facebook 网页中使用。

MAC:

在第 7 节中:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

不要忘记在您的 activity 中添加:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }