Cannot log in to Facebook if the Facebook application is installed

I am using the latest version of Facebook SDK 4.0.1 and the following code to login to facebook:

private class FacebookLoginCallback implements FacebookCallback<LoginResult> { @Override public void onSuccess(LoginResult loginResult) { AccessToken facebookToken = loginResult.getAccessToken(); loginOnServerWithFacebookToken(facebookToken); } @Override public void onCancel() { Log.d("facebook", "login canceled"); } @Override public void onError(FacebookException exception) { Log.d("facebook", exception.toString()); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // facebook action result facebookLoginCallbackManager.onActivityResult(requestCode, resultCode, data); } private void loginToFacebook() { // initializing facebook facebookLoginCallbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(facebookLoginCallbackManager, new FacebookLoginCallback()); ArrayList<String> permissions = new ArrayList<>(); permissions.add("public_profile"); permissions.add("email"); LoginManager.getInstance().logInWithReadPermissions(this, permissions); } 

When the facebook app is not installed on the device, everything works as expected. But if I install the login process to the facebook application, this will not work. All that happens is a circular progress bar in the center of the screen, than the facebook application blinks for a moment and nothing happens - I see my application in the same state as before pressing the login button. In logcat, I found one interesting post:

 E/Parcel﹕ Class not found when unmarshalling: com.facebook.login.LoginClient$Request java.lang.ClassNotFoundException: com.facebook.login.LoginClient$Request at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:251) at java.lang.Class.forName(Class.java:216) at android.os.Parcel.readParcelableCreator(Parcel.java:2133) at android.os.Parcel.readParcelable(Parcel.java:2097) at android.os.Parcel.readValue(Parcel.java:2013) at android.os.Parcel.readArrayMapInternal(Parcel.java:2314) at android.os.Bundle.unparcel(Bundle.java:249) at android.os.Bundle.getString(Bundle.java:1118) at android.content.Intent.getStringExtra(Intent.java:4991) at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1392) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1016) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3980) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3883) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:159) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2583) at android.os.Binder.execTransact(Binder.java:404) at dalvik.system.NativeStart.run(Native Method) Caused by: java.lang.NoClassDefFoundError: com/facebook/login/LoginClient$Request at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:251) at java.lang.Class.forName(Class.java:216) at android.os.Parcel.readParcelableCreator(Parcel.java:2133) at android.os.Parcel.readParcelable(Parcel.java:2097) at android.os.Parcel.readValue(Parcel.java:2013) at android.os.Parcel.readArrayMapInternal(Parcel.java:2314) at android.os.Bundle.unparcel(Bundle.java:249) at android.os.Bundle.getString(Bundle.java:1118) at android.content.Intent.getStringExtra(Intent.java:4991) at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1392) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1016) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3980) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3883) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:159) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2583) at android.os.Binder.execTransact(Binder.java:404) at dalvik.system.NativeStart.run(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.login.LoginClient$Request" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:251) at java.lang.Class.forName(Class.java:216) at android.os.Parcel.readParcelableCreator(Parcel.java:2133) at android.os.Parcel.readParcelable(Parcel.java:2097) at android.os.Parcel.readValue(Parcel.java:2013) at android.os.Parcel.readArrayMapInternal(Parcel.java:2314) at android.os.Bundle.unparcel(Bundle.java:249) at android.os.Bundle.getString(Bundle.java:1118) at android.content.Intent.getStringExtra(Intent.java:4991) at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1392) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1016) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3980) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3883) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:159) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2583) at android.os.Binder.execTransact(Binder.java:404) at dalvik.system.NativeStart.run(Native Method) 

I am using multi-dex.

The Facebook SDK is included in gradle:

 compile 'com.facebook.android:facebook-android-sdk:4.0.1' // facebook 

How to log in through the native facebook app?

Edit: This question is NOT a duplicate of the Android class not found . None of the given answers solves the problem.

+3
source share

All Articles