安装Facebook本机应用程序时,isSessionValid()返回NO

Amo*_*tir 1 single-sign-on facebook-android-sdk

我使用Facebook SDK for Android存在SSO问题.在安装本机Facebook应用程序时才会出现此问题.当它没有安装时,一切正常,特别是:

Facebook facebook = new Facebook(APP_ID);
facebook.authorize(mActivity, , new DialogListener() {
   ...
});

facebook.isSessionValid(); // returns true
Run Code Online (Sandbox Code Playgroud)

但是当安装本机应用程序时,尽管我调用了该方法,但facebook.isSessionValid()仍然会返回.falseauthorize

我应该补充一点,我使用我的调试证书生成的hashkey创建了一个基于Android的原生Facebook应用程序keytool.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

Lio*_*luz 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) {}
Run Code Online (Sandbox Code Playgroud)

不要忘记获得Base64(http://iharder.sourceforge.net/current/java/base64/).

生成的密钥在您的logcat上,用此替换旧的密钥.

解决方案归功于:http: //p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/