4

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

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

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

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

我的 java keytool 存储在:

C:\Program Files\Java\jre7\bin

OpenSSL 存储在:

F:\openssl\bin

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

请帮我解决这个问题!

4

2 回答 2

0

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);
}
于 2013-01-01T19:56:48.720 回答
0

你可能弄错了密码。

看看我的回答这里

希望有帮助

于 2013-07-18T20:46:49.433 回答