如何在片段中使用FacebookSDK中的LoginManager类?

时间:2015-07-14 13:26:58

标签: android facebook facebook-login

看起来FacebookSDK的LoginManager只包含一个android.support.v4.app.Fragment参数的方法,而没有android.app.Fragment的方法。不幸的是,v4.app.Fragment对我来说不是一个选择。我尝试在Activity和v4.app.Fragment中做同样的事情,但它确实有效。但是,我不能使用其中任何一个。

private void init() {
    callbackManager = CallbackManager.Factory.create();
    loginManager = LoginManager.getInstance();

    loginManager.registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    onLoginSuccess(loginResult);
                }

                @Override
                public void onCancel() {
                    onLogInFailed();
                }

                @Override
                public void onError(FacebookException e) {
                    onLogInFailed();
                }
            });
}

private void logIn() {
    Global.log("logging in to facebook");
    Collection<String> permissions = Arrays.asList("public_profile", "email");
    loginManager.logInWithReadPermissions(getActivity(), permissions);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

有问题的方法是loginManager.logInWithReadPermissions,可以将活动或v4.app.Fragment作为参数,但不是我需要的Fragment类型。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

它是在Facebook SDK版本4。8。0(2015年11月11日)中实现的,请看一下:

  

添加了对使用本机的登录管理器和UI元素的支持   片段(android.app.Fragment)

文档也已更新:

  

CallbackManager - 用于将呼叫路由回Facebook SDK和您的   注册回调。您应该从启动活动中调用它   或片段onActivityResult调用。

来源:

https://developers.facebook.com/docs/facebook-login/android https://developers.facebook.com/docs/android/change-log-4.x#4_8_0