I am using facebook login button in my app but when user clicks on login I have to get his current location using gps I am able to show the alert dialog for GPS not enabled if its not enabled it should not redirect to Facebook login page, but it still goes to facbook login page
loginButton = (LoginButton) findViewById(R.id.act_reg_fb_login);
callbackManager = CallbackManager.Factory.create();
loginButton.setOnClickListener(this);
handling the login button click listner
case R.id.act_reg_fb_login:
if(isGettingHomeEntityData)
{
List<String> permissions = new ArrayList<>();
permissions.add("public_profile");
permissions.add("email");
permissions.add("user_likes");
permissions.add("user_location");
permissions.add("user_actions.books");
loginButton.setReadPermissions(permissions);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
if (loginResult.getAccessToken() == null) {
showSignUpLoginIssue(Constants.ErrorIssue.ERR_WHILE_LOGIN);
} else {
getEmailFromFaceBookAndLogin(loginResult.getAccessToken());
}
}
@Override
public void onCancel() {
UIUtility.showSnackBar(coolMain, getString(R.string.err_facebook_cancelled));
}
@Override
public void onError(FacebookException error) {
Log.e("fb error", String.valueOf(error));
UIUtility.showSnackBar(coolMain, error.getLocalizedMessage());
}
});
break;
}
else
{
initializeLocationVariables();
break;
}
Try this in onCreate() of your Activity
private AccessTokenTracker accessTokenTracker;
callbackManager = CallbackManager.Factory.create();
updateWithToken(AccessToken.getCurrentAccessToken());
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {
updateWithToken(newToken);
}
};
accessTokenTracker.startTracking();
Also in onStop()
@Override
public void onStop() {
super.onStop();
accessTokenTracker.stopTracking();
}
in updateWithToken()
method:
private void updateWithToken(AccessToken currentAccessToken) {
if (currentAccessToken != null) {
LoginManager.getInstance().logOut();
} else {
}
}