密钥哈希未生成

时间:2013-01-01 18:54:02

标签: java android facebook keytool android-keystore

我试图从我的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时,我提供了正确的文件路径。

请帮我解决这个问题!

2 个答案:

答案 0 :(得分: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时,它首先请求我的权限throgh应用程序,然后我接受弹出窗口出现“com.facebook.facebookexception:会话提供给未打开状态的请求“

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

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

答案 1 :(得分:0)

您可能输错了密码。

看看我的回答Here

希望有所帮助

相关问题