【问题标题】:Keeping a local copy of Facebook friend list保留 Facebook 好友列表的本地副本
【发布时间】:2012-10-30 00:22:06
【问题描述】:

我创建了一个应用程序,它从 Facebook 帐户获取朋友列表,然后将朋友数据的部分记录(只是姓名和 uid)存储在 SQLite 数据库中。

我不确定这在多大程度上可能是关于隐私等的任何问题。

这甚至会违反 Facebook 规则吗?

不要故意粗鲁或任何事情,但请不要回答诸如“您到底为什么要保留本地朋友列表”之类的答案。假设有一个很好的理由。

【问题讨论】:

  • 只是为了理解-您是在问是否合法允许在 SQLite db 中保留 Facebook 数据的部分记录?还是您在问是否有更安全的方法?
  • 我想我像前者一样提出了这个问题,但我实际上是在问这两个问题。
  • 嗯,我不是律师,但我想如果 facebook 和用户授权您访问数据可能没问题。至于“更安全”的方式......我想你应该使用 SharedPreferences 因为它与你的应用程序紧密相关。您希望我提供代码作为您问题的答案吗?
  • 是的,请,我将不胜感激。我想我使用了 SQLite,因为它是存储此类数据的更直观的方式:数据库。

标签: android facebook-graph-api


【解决方案1】:

根据我们Facebook Platform Policies第二部分下的这部分:

您可以缓存通过使用 Facebook API 收到的数据,以改善您的应用程序的用户体验,但您应该尽量使数据保持最新。此权限不授予您对此类数据的任何权利。

IANAL,但我对此的解释似乎是你可以缓存数据但你无权以持久的方式存储数据。

另一个需要考虑的问题是,您将如何与用户的实际好友列表保持一致。如果您确实存储了数据,然后用户添加了 5 个朋友但删除了他的 3 个老朋友,那么您将如何更新本地数据库中的数据并保持最新?您将不得不从 Facebook 中提取用户的朋友列表,如果您每次都必须获取它,这会破坏存储它的全部意义(但由于您没有说明这样做的目的,我假设您有一个存储这个而不是每次都获取的充分理由)。

【讨论】:

  • 感谢 Jesse,政策页面稍微清除了一些问题。
【解决方案2】:

我收回它,SharedPreferences 可能不会更好。内部文件存储可能是您想要的。它应该比 SQLite DB 快得多。并且在您的应用卸载时也会被删除

您要做的是,假设您同时拥有 Facebook 好友列表,将其保存到 HashMap,然后使用内部文件存储保存该哈希图。

在这里查看写得很好的工作代码:

Android - SharedPreferences with serializable object

【讨论】:

  • 你能稍微扩展一下“它应该比 SQLite DB 快得多”吗?我一直认为 DB 比常规文件访问要快得多。
  • hmm... 好问题,我想在我过去处理数据库的经验中总是比读取文件慢,而且您可以使用“getCacheDir()”来获取文件的缓存版本。我可能是错的。回想起来,对于你正在做的事情,我认为你原来的方法很好(假设数据库与文件没有法律问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2015-03-16
  • 1970-01-01
相关资源
最近更新 更多