Session.openActiveSession仅在Facebook Android SDK中调用OPENING

时间:2014-04-27 08:57:18

标签: android facebook facebook-android-sdk

我正在尝试使用Facebook Android SDK登录Facebook,但状态回调仅在OPENING会话状态下触发一次。之后,Facebook登录活动显示没有内容(我知道它的活动,因为它具有我在strings.xml中为title_facebook_login设置的标题)一会儿,并且消失了一秒钟之内。没有其他回调被触发,没有例外,没有崩溃。它只是在我最初的活动中永远等待。这是我的代码:

Session.openActiveSession(parent, true, new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if(state == SessionState.OPENED){
                String accessToken = session.getAccessToken();
            }
        }
    });

为什么SessionState.OPENED(或创建,甚至是停止)的回调不会发生火灾,只会打开?

1 个答案:

答案 0 :(得分:9)

您需要致电 onActivityResult

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

所以登录完成后。它涉及相同的活动,并在会话状态打开时调用状态回调

初始化 UiLifecycleHelper

private UiLifecycleHelper uiHelper;
oncreate中的

需要在 setContentView

之前调用
uiHelper = new UiLifecycleHelper(this, statusCallback);
        uiHelper.onCreate(savedInstanceState);

需要在

中维护会话
    @Override
    protected void onResume() {
        super.onResume();
        uiHelper.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        uiHelper.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        uiHelper.onDestroy();
    }