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)); Кроме того, убедитесь, что ваша деятельность не имеет "единственного экземпляра" в качестве свойства.