为什么在使用 Facebook 登录按钮调用 CallbackManager 上的 onActivityResult() 后完全没有任何反应?

Why absolutely nothing happens after calling onActivityResult() on the CallbackManager using the Facebook Login Button?

我一直在想办法解决这个问题,但没有成功。

这里的问题是点击登录按钮后,它正常加载 Facebook Activity,完成后,我的 activity 收到 activity 结果并通知 CallbackManager (全部如文档中所述。

不幸的是,此时没有任何反应,注册的 FacebookCallback 中的任何方法都没有被执行,甚至没有记录一行来通知错误。

以下是涉及的文件:

public class LoginActivity extends Activity

    CallbackManager callbackManager;
    LoginButton loginFacebook;

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

        setContentView(R.layout.activity_login);


        ...


        callbackManager = CallbackManager.Factory.create();
        loginFacebook = (LoginButton) findViewById(R.id.login_button);
        loginFacebook.setReadPermissions("public_profile","email");
        loginFacebook.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                ...
                (This is never executed)
            }

            @Override
            public void onCancel() {
                ...
                (Not executed)
            }

            @Override
            public void onError(FacebookException e) {
                ...
                (Not executed either)
            }
        });

    }



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


    ...


}

并且 activity_login.xml 包括这样的按钮

<com.facebook.login.widget.LoginButton
            android:id="@+id/login_button"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"/>

我还在我的 android 清单文件中添加了 Facebook Activity 和 APP ID

<activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />

以及 facebook 应用程序中的 android 应用密钥。

希望能解决这个问题,非常感谢

尝试将此添加到您的 manifest.xml 应用程序

之间
<activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activity

好的,我现在明白了。这可能是错误的

callbackManager.onActivityResult(resultCode, resultCode, data);

看到 resultCode 被输入了两次。你想要做的是:

callbackManager.onActivityResult(requestCode, resultCode, data);