2

我在我的应用程序中使用 facebook api。它工作正常,我可以登录并在墙上发帖。但我无法删除登录信息。

这是代码

   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

3 回答 3

11

请参考以下链接

https://stackoverflow.com/a/3687333/1441666

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

或者

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
于 2012-07-13T12:15:49.803 回答
1

我在我的项目中使用它工作完美..

Preferences = getSharedPreferences("这是您的偏好名称", Context.MODE_PRIVATE);

  1. 编辑器 = 首选项.edit();
  2. 编辑器.clear();
  3. editor.commit();
于 2016-05-03T09:45:04.900 回答
0

这里的问题是(IMO)您从 中清除凭据SharedPreferences,这只会删除您的 Token 和 Date 表单 SharePreferences。

但是您不会取消facebook对象的会话,这就是为什么,现在您的 facebook 在其字段变量中有 Token 和 Date ,并且它能够发布该消息。

因为

  • 创建 facebook 对象时,它会自动从SharedPreferences.
  • 然后您删除凭据
  • 但 facebook 对象有凭据,也请尝试将其无效。

更新: 因此,当您取消它们时,请务必在将任何活动发布到 Facebook 之前检查会话,如下所示:

facebook.isSessionValid(); //checks if the session valid
于 2012-07-13T12:16:26.240 回答