【问题标题】:Key hash not being generated [duplicate]未生成密钥哈希[重复]
【发布时间】:2012-12-16 07:13:28
【问题描述】:

我试图从我的 Android 应用程序中获取密钥哈希。 Facebook SDK 3.0 给出了以下代码:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

当我运行它时,它首先显示binary:no error;然后它会询问我输入为android 的密码。按下回车后,它会在我期望密码的地方返回空白。

我使用了here提到的解决方案;这确实给了我一个密钥哈希,但是当我使用它时,没有一个会话正在打开。

我的 java keytool 存储在:

C:\Program Files\Java\jre7\bin

而OpenSSL存储在:

F:\openssl\bin

当我在 Windows 的 MD 中运行它时,我给出了正确的文件路径。

请帮我解决这个问题!

【问题讨论】:

标签: java android facebook keytool android-keystore


【解决方案1】:

你可能输错了密码。

看我的回答Here

希望对你有帮助

【讨论】:

    【解决方案2】:

    Windows 获取 keytool 总是有点麻烦和棘手,我建议替代方案。在您的应用程序的onCreate 方法中运行以下代码:

       try {
            PackageInfo info = getPackageManager().getPackageInfo(
                "COM.YOUR.PACKAGE.NAME", 
                PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("My Keyhash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (Exception e) {
            Log.e("My Keyhash", e.toString());
        } 
    

    并观察 logcat 中的日志输出以获取您的 keyhash。确保将上面的包名称替换为您自己的。

    编辑:

    密钥哈希已正确上传,但会话仍未打开...登录到 Facebook 时,它首先通过应用程序请求我的许可,然后在我接受弹出窗口后显示“com.facebook.facebookexception:会话提供给处于未打开状态的请求"

    确保您的片段/活动中有此代码:

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

    【讨论】:

    • 谢谢 .. 生成了密钥哈希,但我更新了我的应用程序,但会话仍然无法正常工作。
    • 如果您需要帮助(例如堆栈跟踪、错误消息),您将不得不提供比这更多的详细信息
    • 密钥哈希已正确上传,但会话仍未打开...登录到 Facebook 时,它首先通过应用程序请求我的许可,然后在我接受弹出窗口后显示“com .facebook.facebookexception:会话提供给未打开状态的请求”
    • 是的,存在该代码的一个版本...问题是即使 facebook 3.0 SDK 中给出的示例应用程序也无法正常工作并出现上述错误
    • 我会尝试在您的 FB 设置中从您的授权应用程序中删除该应用程序,然后重新验证该应用程序。除此之外,听起来您的应用程序存在配置问题,因为我没有听到有关示例应用程序存在此问题的报告,并且我也无法重现。