Я работаю над приложением, использующим Facebook. При запуске приложения вызов Session.getActiveSession()
возвращает null. У меня есть проверка, чтобы проверить, является ли сеанс нулевым, и если это так, запустите метод Session.openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback)
.Android Facebook SDK openActiveSession (...) не вызывает обратный вызов
Я хочу сохранить логическое значение в этом методе равным false, потому что я хочу, если нужно, отправить пользователю пользовательскую активность входа и установить этот параметр в значение true, чтобы вызвать основное окно разрешений для входа (не желательно). Но когда я устанавливаю параметр в значение false, этот метод даже не вызывает изменение состояния сеанса и не вызывает связанный обратный вызов (третий параметр). Если я установил параметр в значение true, а затем вернулся из последующего диалога, срабатывает триггер.
UPDATE: Цель состоит в том, чтобы инициализировать объект Session
без использования стандартного LoginUi. Я пробовал все, что мог, и ничего не инициализирует сессию. Если пользователь не вошел в систему, я хочу перейти на другой Activity
, где у меня есть стандарт LoginButton
.
Вот код, я использую:
@Override
public void onCreate(Bundle savedInstanceState) {
Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
Log.i("MainActivity", "calling session callback");
onSessionStateChange(session, state, exception);
}
};
session = Session.getActiveSession();
if(session==null){
Log.i("MainActivity", "session is null");
Session.openActiveSession(this, false, callback);
}
else{
if(session.isClosed()){
Log.i("MainActivity", "session is closed");
startActivityForResult(new Intent("<custom login activity>"), LOGIN_REQUEST);
}
else if(session.isOpened()){
Log.i("MainActivity", "session is opened");
initializeActivity();
}
}
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
}
Получаю тот же результат. Похоже, что этот метод не связывает обратный вызов с сеансом, если сеанс имеет значение null и нет сохраненногоInstsanceState. – Wenger