2016-10-05 65 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