3

我正在开发一个使用这个的应用程序:https ://developers.facebook.com/docs/android/native-login/

我遵循了 Facebook 开发教程,所以基本上我有会话检查,它打开对话框,我试图获取 Cancel 事件(当用户取消 Facebook 对话框时),但我对此没有任何方法。

也许你可以帮忙。

谢谢

编辑:实际上,即使我单击取消按钮,我仍然会正确收到 GraphUser。这很奇怪。

4

2 回答 2

13

使用 Android SDK 3.5,我通过异常获得了取消事件,如果状态更改回调带有 FacebookOperationCanceledException 或 FacebookAuthorizationException 的实例,则它是一个取消事件:

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (exception instanceof FacebookOperationCanceledException || exception instanceof FacebookAuthorizationException) {

        // Cancelled by user, show alert
        new AlertDialog.Builder(this).setTitle(R.string.cancelled).setMessage(R.string.permission_not_granted).setPositiveButton(R.string.ok, null).show();

    } else {

        Session session = Session.getActiveSession();
        if ((session != null && session.isOpened())) {
            // Session ready
        }
    }
}

private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        onSessionStateChange(session, state, exception);
    }
};

它工作得很好

于 2013-09-04T17:11:14.053 回答
0

将 Session.StatusCallback 添加到您的打开请求中,您可以在其中检查 SessionState。

       new Session.StatusCallback() {

            @Override
            public void call(Session session, SessionState state, Exception exception) {
                        //check state
            }

        };

看看这个问题

于 2013-08-30T19:12:44.250 回答