У меня есть следующий сценарий с facebook sdk 3.0.1. Когда пользователь сначала регистрируется и выбирает «FB login», тогда начинается SSO, открывается новый сеанс, и все работает нормально. Но тогда, когда пользователь закрывает приложение и запускает его снова - я не понимаю, как получить последний открытый сеанс, в настоящее время я открываю новый сеанс, и пользователь снова видит индикатор выполнения FB (пока он подключен к FB, даже если пользователь уже одобрил FB в своем последнем прогоне). Кто-нибудь знает, как пропустить эту операцию?Android facebook sdk 3.0.1 с использованием последнего сеанса
Edit 1:
Это, как я получить сеанс:
public void tryRetrievFacebookSession() {
Session session = Session.getActiveSession();
if (session != null && session.isOpened())
return;
session = Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
MobliLog.d("SplashScreen", "Inside call() with session with state: " + session.getState());
// onSessionStateChanged(session, state, exception);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session session = Session.getActiveSession();
if (session != null)
session.onActivityResult(this, requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
Сеанс обычно создается или из LoginButton или с этими линиями:
session = Session.getActiveSession();
if (session.getState().isClosed())
session = new Session(this);
if (session.isOpened()) {
onAuthenticationEndListener.onSuccessfullAuthentication();
return;
} else {
this.onFacebookAuthenticationEndListener = onAuthenticationEndListener;
Session.setActiveSession(session);
session.openForRead(new Session.OpenRequest(SocNetwksCompatScreen.this).setCallback(null));
return;
}
Информация 1 :
Когда я делаю первый сеанс сеанса = Session.getActiveSessi на(); в логинами после аутентификации SSO, мой сеанс состояние CLOSED вместо ОТКРЫТ
информация 2: Я использую uiHelper и инициализировать его следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
twitter = SocialPluginsUtils.getTwitterClient();
uiHelper = new UiLifecycleHelper(this, statusCallback);
uiHelper.onCreate(savedInstanceState);
}
Теперь я знаю, что после того, как я выполняю Session.getActiveSession(); состояние сеанса должно быть ОТКРЫТО, и после этого ОТКРЫТЬ, а затем следует вызвать обратный вызов uiHelper. В моем коде состояние CLOSED или CLOSED_LOGIN_FAILED или CREATED (не уверен, почему оно не стабильно), а остальное не происходит
какой учебник вы следовали? – keen
https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-2.0-to-3.1/ – Nativ