I need to implement facebook login in my application. Here is my class:
manifest:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/app_name" /> <provider android:authorities="com.facebook.app.FacebookContentProvider" android:name="com.facebook.FacebookContentProvider" android:exported="true" />
And my class:
public abstract class FaceBookActivityImpl extends BaseActivity { private CallbackManager callbackManager; private ShareDialog shareDialog; @Override protected void initView() { FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }); FacebookSdk.addLoggingBehavior(LoggingBehavior.REQUESTS); } public CallbackManager getCalbackManager(){ return callbackManager; } public ShareDialog getShareDialog(){ if(shareDialog==null){ shareDialog = new ShareDialog(this);
}
When the user enters the login, I need to check publish_actions for such an action:
LoginManager.getInstance().registerCallback(((MainActivity) getContext()).getCalbackManager(), new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { DebugLog.d("login fb success "+loginResult.getRecentlyGrantedPermissions()); likeTopic(); } @Override public void onCancel() { DebugLog.d("login fb cancel"); } @Override public void onError(FacebookException e) { DebugLog.d("login fb error "+e.getMessage()); } }); LoginManager.getInstance().logInWithPublishPermissions(((MainActivity) getContext()), Arrays.asList("publish_actions"));
But it always cancels:
DebugLog.d("login fb cancel");
What am I missing, please help me, I have been doing research for a long time. Thank you very much.
Edit: when this happened, logcat (without filter) shows:
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)
source share