Вход в Facebook без использования кнопки входа в Facebook на Android с встроенным диалогом

#android #facebook

#Android #Facebook

Вопрос:

В моем приложении у меня есть требование войти в Facebook без использования кнопки входа. Я попробовал следующий фрагмент кода

     Session s = new Session(activity);
    Session.setActiveSession(s);
    Session.OpenRequest request = new Session.OpenRequest(activity);
    request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
    request.setCallback( new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if (exception != null) {
                Toast.makeText(activity, "Facebook"   exception.getMessage(), Toast.LENGTH_SHORT).show();
                closeTask = true;
            }
            else if(session.getState().isOpened()){}
        }
    });
 

Но он открывает веб-диалог. Мое требование — открыть встроенное диалоговое окно, если установлено приложение facebook. Если приложение facebook не установлено, откройте веб-диалог.

Спасибо, Маниш Гарг

Ответ №1:

Вы должны удалить эту строку:

 request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
 

Он сообщает SDK о подавлении единого входа (который является встроенным диалогом).

Комментарии:

1. Привет, я использовал SUPRESS_SSO, потому что я также выполняю поиск в facebook, используя Session.getActiveSession().closeAndClearTokenInformation();. После выхода из системы, когда я снова пытаюсь войти в систему без использования SUPRESS_SSO, приложение не запрашивает учетные данные пользователя.

2. Что вы подразумеваете под «не запрашивать учетные данные пользователя»? Это просто дает вам токен доступа?

3. Допустим, пользователь выполняет следующие действия: 1. Приложение Facebook не вошло в систему, и пользователь входит в систему в первый раз через приложение, он также вошел в приложение facebook (ведет себя как единый вход). 2. Пользователь выходит из facebook с помощью моего приложения, closeAndClearTokenInformation закрывает сеанс только для приложения. 3. Пользователь снова пытается войти в систему с помощью моего приложения на Facebook, поскольку приложение facebook уже вошло в систему, закрыт только сеанс приложения, api facebook не запрашивает учетные данные пользователя и не открывает сеанс.

4. Это ожидаемое поведение. Если пользователь уже вошел в систему через ваше приложение, вы просто получите токен доступа из приложения FB без какого-либо дальнейшего взаимодействия с пользователем. Любой дополнительный пользовательский интерфейс необходим только тогда, когда вы запрашиваете дополнительные разрешения.

5. Спасибо, Мин, я удалил эту строку и ее работоспособность. Теперь я ищу какое-то другое решение для функции выхода из системы