Подтвердить что ты не робот

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 как "ОТКРЫТИЕ". После этого состояние не изменится.

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

4b9b3361

Ответ 1

Вам нужно переопределить 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);
}

Ответ 2

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