Android Facebook authorization - can not log in when official Facebook app is installed
Solution 1
Please update the below code of your application. It will solve your problem.
public void loginAndPostToWall() {
facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH,
new LoginDialogListener());
}
Solution 2
I had the same problem like you. Finally, I solved using this:
Open Facebook.java provided by the Facebook SDK and then change it like this:
public void authorize(Activity activity, String[] permissions,
int activityCode, final DialogListener listener) {
boolean singleSignOnStarted = false;
mAuthDialogListener = listener;
/*
// Prefer single sign-on, where available.
if (activityCode >= 0) {
singleSignOnStarted = startSingleSignOn(activity, mAppId,
permissions, activityCode);
}
// Otherwise fall back to the traditional dialog.
if (!singleSignOnStarted) {
*/
startDialogAuth(activity, permissions);
// }
}
Solution 3
This is just a wild guess, but instead of this:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}
Try:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}
Since you're not calling the parent method some things might not work as expected...
anber
Updated on June 24, 2022Comments
-
anber almost 2 years
I need to log in to Facebook and get same fields like email, etc. I use the Facebook SDK, and I set my Android key Hash in developers.facebook and set "Configured for Android SSO". In the simulator and some devices the application works fine.
But if the official Facebook application is installed on the device, my application does not work: I push the login button, but I not see a dialog with a web-view were my password and login are asked for. It looks like the problem in Stack Overflow question Using facebook.authorize with the Android SDK does not call onActivityResult or Stack Overflow question Android Facebook API single sign-on?, but I can not understand how to resolve it.
My code
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data); } public void getAccessToken() { SessionEvents.AuthListener listener = new SessionEvents.AuthListener() { @Override public void onAuthSucceed() { setupAccessToken(facebookConnector.getFacebook().getAccessToken()); } @Override public void onAuthFail(String error) { Toast.makeText(getApplicationContext(), getString(R.string.error_login), Toast.LENGTH_SHORT).show(); } }; SessionEvents.addAuthListener(listener); facebookConnector.login(); }
facebookConnector code
public class FacebookConnector { public void login() { if (!facebook.isSessionValid()) { facebook.authorize(this.activity, this.permissions, new LoginDialogListener()); } } private final class LoginDialogListener implements DialogListener { public void onComplete(Bundle values) { SessionEvents.onLoginSuccess(); } public void onFacebookError(FacebookError error) { SessionEvents.onLoginError(error.getMessage()); } public void onError(DialogError error) { SessionEvents.onLoginError(error.getMessage()); } public void onCancel() { SessionEvents.onLoginError("Action Canceled"); } } }
-
Nitzan Tomer almost 12 yearsThere's no need to change the facebook code, things should work without hacking it. It's not good practice since facebook can change their code tomorrow and then when you update your own codebase you need to remember all changes you had made.
-
anber almost 12 yearsThanks for the answer, it was useful, but @Dipak Keshariya code do the same in more correct way.
-
SRam over 10 yearsif we change the Facebook password and check request to "me", if there is some error then open facebook login dailog , but it shows error again if we check for me request , why session token did not replaced?
-
Nitesh Verma over 9 yearsBut Dipak do you think think this is a fool proof solution for this/ Shouldn't the sdk get the session from the facebook app installed on the device?
-
Vny Kumar over 9 yearsI tried your code Jossy. Doesnt seem to open dialog