在多个活动中设置多个facebook LoginButton

时间:2016-06-26 09:18:44

标签: android facebook

我正在处理这种奇怪的行为,其中在2个不同的活动中使用的相同代码产生不同的输出。

代码是标准的facebook sdk登录迭代,所以:

private CallbackManager fbCallbackManager;
private LoginButton signFacebookButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FacebookSdk.sdkInitialize(context);
    fbCallbackManager = CallbackManager.Factory.create();

    setContentView(R.layout.sign);
    signFacebookButton = (LoginButton) findViewById(R.id.sign_fb_button);
    signFacebookButton.setReadPermissions("public_profile");
    signFacebookButton.setReadPermissions("email");
    signFacebookButton.registerCallback(fbCallbackManager, fbCallback);

}

private FacebookCallback<LoginResult> fbCallback = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(final LoginResult loginResult) {
        Log.d("Facebook Callback", "success");
    }

    @Override
    public void onCancel() {
        Log.d("Facebook Callback", "cancel");
    }

    @Override
    public void onError(FacebookException e) {
        Log.d("Facebook Callback", "error");
    }
};

在两个不同活动中使用的相同精确代码表现不同。

在首次调用它的活动中,它可以正常工作,但是如果我跳过第一个活动(所以我没有单击登录按钮),但是在第二个活动中单击一个新的登录按钮,代码是根本不工作。它会显示facebook进度条几秒钟,然后什么也没发生(控制台中也没有打印任何日志)。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

在这之后浪费了半天之后,我注意到我错过了onActivityResult中的实际fbcallbackManager调用

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