2016-10-05 3 views
0

Ich versuche, das Ergebnis für meine Anmeldung Methode zurückgeben Mit Facebook Api 4.5 Aber das Problem ist, wenn das Ergebnis zurück, bevor Callback-MethodeWarten Facebook Rückruf Ergebnis Ergebnis zurückzukehren

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

} Das Konsolenprotokoll „Ergebnis“ vOR „onSuccess“

so mag ich die Loginmanager warten, bevor das Rück die Wieder beenden Ausführung Sult

Antwort

0

Wenn Sie tatsächlich tun dies wollen Sie dies versuchen können,

Aber ich denke, Sie sollten eine Methode aufrufen, wenn die Anmeldung erfolgreich war und dass Code ausgeführt werden, statt zu überprüfen, ob die Bedingung erfüllt ist, und dann laufen der 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 
      } 
     }); 
+0

Sie speichern meinen Tag :) – Ammar

Verwandte Themen