2016-10-05 147 views
0

我试图返回的结果对于我的登录方法使用Facebook Api 4.5 但问题是当结果返回回调方法等待Facebook的回调结果返回结果

我的代码之前:

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; 
} 

} 控制台登录“返回结果” “的onSuccess”

所以我要等待LoginManager完成返回重新执行前SULT

回答

0

如果你真的想这样做,你可以试试这个,

但我认为你应该调用一个方法,如果登录成功并运行该代码,而不是检查,如果条件为真,然后运行代码

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 
      } 
     }); 
+0

您保存我的日子:) – Ammar