我试图从我的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时,我提供了正确的文件路径。
请帮我解决这个问题!
答案 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)