我在我的应用中使用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墙上发布消息。
我只想删除保存的详细信息,如果用户再次要求在墙上发布消息,则需要弹出登录屏幕。
感谢您的帮助人员
答案 0 :(得分:10)
请参阅以下链接
https://stackoverflow.com/a/3687333/1441666
SharedPreferences.Editor.remove() followed by a commit()
或
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
答案 1 :(得分:1)
我在我的项目中使用过它完美的工作..
Preferences = getSharedPreferences("这是您的首选项名称",Context.MODE_PRIVATE);
答案 2 :(得分:0)
此处的问题是(IMO)您清除SharedPreferences
的凭据,该凭据仅删除您的令牌和日期格式SharePreferences。
但是你不会使facebook
对象的会话无效,这就是为什么,现在你的facebook在其字段变量中有Token和Date,并且能够发布该消息。
由于
SharedPreferences
的凭据。<强>更新强> 因此,当您将它们取消后,请在将任何活动发布到Facebook之前检查会话,如下所示:
facebook.isSessionValid(); //checks if the session valid