Как удалить сохраненные данные в общих настройках в Android?

Я использую API Facebook в моем приложении. Работает нормально, я могу войти и разместить на стене. Но я не мог удалить информацию для входа.

Это код

   public boolean saveCredentials(Facebook facebook) {
        Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
        editor.putString(TOKEN, facebook.getAccessToken());
        editor.putLong(EXPIRES, facebook.getAccessExpires());
        return editor.commit();
    }

    public boolean restoreCredentials(Facebook facebook) {
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
        facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
        facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
        return facebook.isSessionValid();
    }

    public boolean removeCredentials()
    {
        SharedPreferences prefs = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);

            facebook.setAccessToken(prefs.getString("", null));
        facebook.setAccessExpires(prefs.getLong("", 0));
        Editor editor = prefs.edit(); 
        editor.clear();
        editor.commit(); 
        return true; 
    }

Детали общих настроек не были удалены при вызове removeCredentials() метод. Это просто опубликовать сообщение на стене Facebook.

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

Спасибо за помощь ребята

4 ответа

Решение

См ссылку ниже

/questions/46590871/udalenie-obschih-nastroek/46590956#46590956

SharedPreferences.Editor.remove() followed by a commit()

или же

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();

Я использовал в своем проекте, он работает идеально..

Preferences = getSharedPreferences ("здесь имя вашего предпочтения", Context.MODE_PRIVATE);

  1. редактор = предпочтения.edit ();
  2. editor.clear ();
  3. editor.commit ();

Проблема в том, что (IMO) вы удаляете учетные данные из SharedPreferences, который удаляет ваш токен и дату только из SharePreferences.

Но вы не аннулируете свой facebook Сеанс объекта, вот почему, на данный момент ваш Facebook имеет Token и Date в своих переменных поля, и он может публиковать это сообщение.

Так как

  • когда объект facebook создан, он автоматически получает эти учетные данные SharedPreferences,
  • Затем вы удалите учетные данные
  • но у объекта facebook есть учетные данные, попробуйте их тоже аннулировать.

Обновление: поэтому, когда вы аннулировали их, всегда проверяйте сеанс, прежде чем публиковать какие-либо действия в Facebook, например:

facebook.isSessionValid(); //checks if the session valid
      val preferences = getSharedPreferences(AppConstants.TAG, Context.MODE_PRIVATE);
preferences.edit().remove(AppConstants.USER_RESPONSE).commit();
Другие вопросы по тегам