Недавно я обновил facebook sdk, код, который раньше работал, больше не работает.
Я получаю следующее исключение:
06-10 10:37:58.146: E/AndroidRuntime(28184): java.lang.UnsupportedOperationException: Session: an attempt was made to open an already opened session.
06-10 10:37:58.146: E/AndroidRuntime(28184): at com.facebook.Session.open(Session.java:985)
06-10 10:37:58.146: E/AndroidRuntime(28184): at com.facebook.Session.openForRead(Session.java:388)
И у меня есть следующий код для открытия сеанса:
Session session = Session.getActiveSession();
if (session == null) {
session = new Session(DealActivity.this);
}
//session.isOpened() apparently is false!
if (!session.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(this);
openRequest.setPermissions(FacebookManager.READ_PERMISSIONS);
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
openRequest.setCallback(callback);
session.openForRead(openRequest);
return;
} else {
getDataFromFacebook();
}
Также я использую объект facebook UiLifecycleHelper
во всех необходимых обратных вызовах (раньше он работал).
И мой обратный вызов onActivityResult
я попытался сначала вызвать так:
uiHelper.onActivityResult(requestCode, resultCode, data);
И затем следующий код:
Session session = Session.getActiveSession();
if (session != null) {
session.onActivityResult(DealActivity.this, requestCode, resultCode, data);
}
Оба они не работали.
Это facebook Session.StatusCallback
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (exception != null) {
exception.printStackTrace();
return;
}
if (state.isOpened()) {
getDataFromFacebook();
} else if (state.isClosed()) {
}
}
Чего я хочу добиться, так это:
- авторизоваться
- получить основные данные о пользователе (эту часть я умею делать)
- выйти
Посмотрев руководство для разработчиков facebook, я не смог найти ни одного простого примера, за который я был бы признателен.