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


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

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

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

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

есть два способа реализовать Facebook login на Android:

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

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

5 94

5 ответов:

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

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

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

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

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();
}

можно использовать LoginManager.logOut()

проверить https://developers.facebook.com/docs/reference/android/current/class/LoginManager/

чтобы обработать его с помощью 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();
                }
            });
        }

вы можете выйти из системы с помощью 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();

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