Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook Login doesn't work when I use Samsung Android 4.2

When I use HTC Android, it do very well. However, when I use API of Facebook to login using Samsung Android 4.2, I show an Toast message like "login fail please contact the marker of this app and ask them to issue 1732910 to facebook"

Please help me to fix it!

public class FacebookLogin {
/* variable Facebook */
private static final String FACEBOOK_APPID = "578073962236765";
private FacebookConnector facebookConnector;
private final Handler mFacebookHandler = new Handler();
ActivityBase activity;
Request.GraphUserCallback userCallback;
LoginService.OnSwimLogedInEvents swimLoginCallBack;
LoginService loginService;
Dialog changeDialog;
LoadingDialog loadingDialog;

public FacebookLogin(ActivityBase activity, Request.GraphUserCallback userCallback, LoginService.OnSwimLogedInEvents swimLoginCallBack) {
    this.activity = activity;
    this.loadingDialog = new LoadingDialog();
    this.userCallback = userCallback;
    this.swimLoginCallBack = swimLoginCallBack;
    this.loginService = new LoginService(activity);
    this.facebookConnector = new FacebookConnector(FACEBOOK_APPID,
            activity, activity, new String[]{
            "publish_stream", "email", "user_birthday", "read_stream", "offline_access"});
}

public void login() {
    Session.initializeStaticContext(activity);
    if (facebookConnector.getFacebook().isSessionValid()) {
        facebookConnector.getFacebook().getSession()
                .closeAndClearTokenInformation();
    }

    AuthListener listener = new AuthListener() {
        @Override
        public void onAuthSucceed() {
            doLogin();
        }

        @Override
        public void onAuthFail(String error) {
            //(new MessageAlert()).showDialog("Facebook authetication fail\r\nError:" + error, activity);
        }
    };
    SessionEvents.addAuthListener(listener);

    facebookConnector.login();
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}

private void doLogin() {
    AsyncTaskBase<Void, Void, Void> t = new AsyncTaskBase<Void, Void, Void>(
            activity) {
        @Override
        protected Void doInBackground(Void... params) {
            mFacebookHandler.post(facebookUserInfoRunner);
            return super.doInBackground(params);
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    };
    t.execute();
}

final Runnable facebookUserInfoRunner = new Runnable() {
    @Override
    public void run() {
       loadingDialog.showDialogLoading(activity);
        Request.executeMeRequestAsync(facebookConnector.getFacebook()
                .getSession(), new Request.GraphUserCallback() {

            @Override
            public void onCompleted(GraphUser user, Response response) {
                SwimAccount currentAccount = ((SwimApp) activity.getApplication()).getCurrentAccount();
                currentAccount.setAvatarUrl("https://graph.facebook.com/" + user.getId() + "/picture");
                currentAccount.setIsLogin(true);
                currentAccount.setFirstName(user.getFirstName());
                currentAccount.setLastName(user.getLastName());
                currentAccount.setStringId(user.getId());
                currentAccount.setAccountType("facebook");
                currentAccount.setEmail((String) response.getGraphObject().getProperty("email"));
                currentAccount.setBirthdate(user.getBirthday());
                currentAccount.setGender((String) response.getGraphObject().getProperty("gender"));
                if (userCallback != null) {
                    userCallback.onCompleted(user, response);
                }

                loginService.login(currentAccount.getEmail(), "", currentAccount.getAccountType(), currentAccount.getStringId(), swimLoginCallBack);
                //changeDialog.dismiss();
            }
        });
    }
};

}

like image 872
Le Kan Avatar asked Oct 21 '22 06:10

Le Kan


1 Answers

Found a solution to my problem. Try deleting the android:noHistory="true" from the Facebook login activity in your manifest. This messes with the authentication flow of the Session.

like image 70
Ron Avatar answered Oct 24 '22 04:10

Ron