没有调用Facebook LoginManager回调

Pan*_*ous 3 android facebook

我正在使用Facebook sdk 4.1.我已将fb登录按钮添加到片段中,我将代码设置如下:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view= inflater.inflate(R.layout.fragment_login, container, false);

    LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList("public_profile", "email",
            "user_birthday", "user_about_me"));

    loginButton.setFragment(this);


    return view;
}
Run Code Online (Sandbox Code Playgroud)

然后,我有这样的活动

public class MainActivity extends AppCompatActivity {

    private CallbackManager callbackManager;

    private AccessTokenTracker accessTokenTracker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.activity_main);

        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.i("login","success");
            }

            @Override
            public void onCancel() {
                Log.i("login","cancel");
            }

            @Override
            public void onError(FacebookException e) {
                Log.i("login","error");
            }
        });


        accessTokenTracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(
                    AccessToken oldAccessToken,
                    AccessToken currentAccessToken) {
                // App code
                if(currentAccessToken.isExpired()){
                    LoginManager.getInstance().logOut();
                }
            }
        };

        AccessToken accessToken=AccessToken.getCurrentAccessToken();

        if(accessToken==null||accessToken.isExpired()){
            LoginManager.getInstance().logOut();
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.frame_container, new LoginFragment())
                    .commitAllowingStateLoss();
        }

    }

    @Override
    protected void onResume() {
        super.onResume();

    }


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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是callbackManager.onActivityResult(requestCode,resultCode,data); 在onActivityResult方法中调用但是LoginManager.getInstance().registerCallback(callbackManager,新的F​​acebookCallback()......永远不会被调用.为什么会发生这种情况?

Pan*_*ous 6

我删除了loginButton.setFragment(this); 从片段行,正在工作