在单独的类中创建facebook登录回调



我有以下facebook回调,但我想注册它在单独的类(例如FacebookConnector),而不是在MainActivity函数(类似的方案,我想使用任何facebook API连接):

    facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            //do something
        }
        @Override
        public void onCancel() {
            System.err.println("Login cancel");
        }
        @Override
        public void onError(FacebookException e) {
            System.err.println("Error on login");
        }
    });

在main MainActivity函数中,我想创建一些处理程序,其中包含以下代码:

facebookConnector = new FacebookConnector();
if (facebookConnector.successfulLogin()) {
     //do something
}

,其中successfulLogin方法将返回真或假。我怎样才能做到这一点呢?

如果我是你,我会这样做:在FacebookConnector中,我将输入:

public FacebookCallback<LoginResult> getFacebookCallBack() {
    return new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(final LoginResult loginResult) {
            //Some code here
            myActivity.successfulLogin();
        }
        @Override
        public void onCancel() {
            //Some code here
        }
        @Override
        public void onError(FacebookException exception) {
            //Some code here
        }
    };
}

我还将放入FacbookConnector的构造函数:

public void FacebookConnector(MainActivity myActivity){
        callbackManager = CallbackManager.Factory.create();
        FacebookCallback<LoginResult> mFacebookCallBack = getFacebookCallBack();
        fbLoginButton.registerCallback(callbackManager, mFacebookCallBack);
        this.myActivity = myActivity;
}

其中fbLoginButton引用FB登录按钮。我还会在FacebookConnector

中注册一个回调

接下来,在你的MainActivity中,我会放:

protected void onCreate(Bundle savedInstanceState) {
//Your code
    FacebookConnector facebookConnector = new FacebookConnector(context);
}
public void successfulLogin(){
//Code for what you want to do.
}

同样的事情也可以通过使用CallBack-Listener机制来完成,尽管我没有看到这样的区别。希望这对你有所帮助。

最新更新