我使用Facebook SDK for Android存在SSO问题。安装本机Facebook应用程序时,问题出现仅。当它没有安装时,一切正常,特别是:
Facebook facebook = new Facebook(APP_ID);
facebook.authorize(mActivity, , new DialogListener() {
...
});
facebook.isSessionValid(); // returns true
但是,当安装本机应用程序时,facebook.isSessionValid()
仍会返回false
,尽管我调用了authorize
方法。
我应该补充一点,我使用keytool
从我的调试证书生成的hashkey创建了一个基于Android的原生Facebook应用程序。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
发生了什么事?
答案 0 :(得分:7)
解决了! :)
我当然希望这对你也有用。 问题是Windows生成无效密钥。
使用您的应用运行此功能:
try {
PackageInfo info = getPackageManager().getPackageInfo("**YOURPACKAGENAME**", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("PXR", Base64.encodeBytes(md.digest()));
}
}
catch (NameNotFoundException e) {}
catch (NoSuchAlgorithmException e) {}
不要忘记获得Base64(http://iharder.sourceforge.net/current/java/base64/)。
生成的密钥在您的logcat上,用此替换旧的。
解决方案感谢: http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/
答案 1 :(得分:0)
除了Lior所写的内容
你可以像这样做日志:
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
所以你可以使用Andorid Base64