I'm Trying To Return the Result For My Login Method Using Facebook Api 4.5
But the Problem is when the result return Before Callback Method
My Code :
public class FacebookServiceImpl implements FacebookService {
private AndroidLauncher androidLauncher;
public CallbackManager callbackManager;
private boolean loginSuccess;
public FacebookServiceImpl(AndroidLauncher androidLauncher) {
this.androidLauncher = androidLauncher;
}
public boolean login() {
callbackManager = CallbackManager.Factory.create();
List<String> permission = new ArrayList<>();
CallbackManager cm;
permission.add("user_photos");
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Gdx.app.log("onSuccess",loginSuccess+"");
loginSuccess = true;
}
@Override
public void onCancel() {
Gdx.app.log("onCancel",loginSuccess+"");
loginSuccess = false;
}
@Override
public void onError(FacebookException exception) {
Gdx.app.log("onError",loginSuccess+"");
loginSuccess = false;
}
});
LoginManager.getInstance().logInWithReadPermissions(androidLauncher, permission);
Gdx.app.log("Returning result",loginSuccess+"");
return loginSuccess;
}
} The Console Log "Returning Result " BEFORE "onSuccess"
so i want to wait the LoginManager to finish executing before return the result
If you actually want to do this you can try this,
But i think you should call a method if the login was successful and run that code, instead of checking if the condition is true and then run the code
public boolean login(final MyListener myListener) {
callbackManager = CallbackManager.Factory.create();
List<String> permission = new ArrayList<>();
CallbackManager cm;
permission.add("user_photos");
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Gdx.app.log("onSuccess",loginSuccess.toString());
myListener.success(true);
}
@Override
public void onCancel() {
Gdx.app.log("onCancel",loginSuccess.toString());
myListener.success(false);
}
@Override
public void onError(FacebookException exception) {
Gdx.app.log("onError",loginSuccess.toString());
myListener.success(false);
}
});
LoginManager.getInstance().logInWithReadPermissions(androidLauncher, permission);
Gdx.app.log("Returning result",loginSuccess.toString());
}
interface MyListener{
void success(boolean result);
}
...
login(new MyListener() {
@Override
public void success(boolean result) {
//Some Stuff
}
});