Android Facebook SDK3.0, состояние сеанса ОТКРЫТО

Я пытаюсь использовать Facebook SDK 3.0 для получения токена доступа по нажатию кнопки в моем приложении для Android. У меня есть общая кнопка в моей деятельности, которая выполняет следующие действия:

Button facebook = (Button)findViewById(R.id.facebookLoginButton);
    facebook.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Session session = new Session(getApplicationContext());
            Session.setActiveSession(session);
            session.openForRead(new Session.OpenRequest(SignInActivity.this).setCallback(statusCallback));
        }
    });

А затем обратный вызов:

private class FacebookSessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
            String s=session.getAccessToken();
    }
}

Нажатие на кнопку запрашивает у меня разрешение на доступ к моему профилю, как и ожидалось, но этот обратный вызов вызывается только один раз с SessionState как "OPENING". Состояние не меняется после этого.

Что мне здесь не хватает? Моя конечная цель на самом деле просто получить токен доступа один раз, и я не очень хочу сохранять сеанс или использовать его для входа в свое приложение.

2 ответа

Решение

Вам необходимо переопределить onActivityResult, чтобы после проверки учетных данных в Facebook для Android (или встроенного входа в систему) результаты обрабатывались, а сеанс обновлялся. Добавьте следующий код:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession()
        .onActivityResult(this, requestCode, resultCode, data);
}

@Lucas Jota: Попробуйте изменить код запроса. это работает для меня. session.openForRead(новый Session.OpenRequest(LoginActivity.this).setCallback(statusCallback).setRequestCode(urRequestCode)); Кроме того, убедитесь, что ваша деятельность не имеет "единственного экземпляра" в качестве свойства.

Другие вопросы по тегам