等待 Facebook 回调结果到 return 结果
Wait Facebook Callback result to return result
我正在尝试 Return 使用 Facebook Api 4.5
我的登录方法的结果
但问题是当结果 return 在回调方法
之前
我的代码:
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;
}
}
控制台日志 "Returning Result " BEFORE "onSuccess"
所以我想在 return 结果
之前等待 LoginManager 完成执行
如果你真的想这样做,你可以试试这个,
但我认为您应该在登录成功时调用一个方法并 运行 该代码,而不是检查条件是否为真然后 运行 代码
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
}
});
我正在尝试 Return 使用 Facebook Api 4.5
我的登录方法的结果
但问题是当结果 return 在回调方法
我的代码:
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;
}
} 控制台日志 "Returning Result " BEFORE "onSuccess"
所以我想在 return 结果
之前等待 LoginManager 完成执行如果你真的想这样做,你可以试试这个,
但我认为您应该在登录成功时调用一个方法并 运行 该代码,而不是检查条件是否为真然后 运行 代码
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
}
});