Facebook SDK 4 для Android - как выйти из программы

Недавно Facebook выпустил SDK 4 с новыми и прохладными обновлениями. Я попытался переключиться на SDK4, чтобы использовать новые функции, однако я борюсь с функцией входа в Facebook.

До тех пор, чтобы программно выйти из программы Facebook, я использовал:

Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();

Но SDK4, похоже, больше не поддерживает сессию, и в официальных документах они упоминают:

Существует два способа внедрения Facebook-входа на Android:

Класс LoginButton - который предоставляет кнопку, которую вы можете добавить в свой интерфейс. Он следует за текущим токеном доступа и может регистрировать людей в и из них.

Ну, похоже, нет возможности выйти из программы Facebook, кроме использования LoginButton. У кого-нибудь есть идея, пожалуйста, поделитесь им здесь.

Ответ 1

Вы можете использовать LoginManager.getInstance().logOut();, даже если вы используете LoginButton, потому что

Этот элемент пользовательского интерфейса обертывает функциональность, доступную в LoginManager.

EDIT: Просто упомянем, что это работает для Facebook SDK v4. Я не знаю, изменят ли они это в будущем.

@в описании batoutofhell, не забудьте поставить FacebookSdk.sdkInitialize(getApplicationContext()); для инициализации facebook sdk. Подробнее см. здесь.

Ответ 2

SDK4, если вы хотите полностью де-пара, убедитесь, что вы также удалили приложение из учетной записи пользователя facebook. Этот метод полностью отключает пользователя:

public void disconnectFromFacebook() {

    if (AccessToken.getCurrentAccessToken() == null) {
        return; // already logged out
    }

    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
            .Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {

            LoginManager.getInstance().logOut();

        }
    }).executeAsync();
}

Ответ 4

Чтобы обработать его с помощью loginButton:

//Check if user is currently logged in
        if (AccessToken.getCurrentAccessToken() != null && com.facebook.Profile.getCurrentProfile() != null){
            //Logged in so show the login button
            fbLogin.setVisibility(View.VISIBLE);
            fbLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
//log out
                    LoginManager.getInstance().logOut();
                    gotoLogin();
                }
            });
        }

Ответ 5

U может выйти из системы с помощью LoginManager, но вам также нужно использовать запрос графа. Я говорю о выходе из системы полностью, поэтому в следующий раз вы можете войти в систему с другой учетной записью.

new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
            .Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {

            SharedPreferences pref = DashBoard.this.getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = pref.edit();
            editor.clear();
            editor.commit();
            LoginManager.getInstance().logOut();

            Intent logoutint = new Intent(DashBoard.this,MainActivity.class);
            logoutint.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivity(logoutint);

        }
    }).executeAsync();

С помощью общих настроек здесь вы можете полностью выйти из системы. И в следующий раз вы можете выйти из другой учетной записи.