Facebook应该在我自己的数据库中保留用户的好友列表吗?

时间:2012-04-03 13:51:03

标签: facebook persist

我正在开发一个连接到Facebook的应用程序(Flash / AS3)。在用户登录后,我需要获取他的朋友列表(仅限ID),检查他们中的任何一个是否是我的应用程序的用户(通过数据库上的注册表),通过向每个用户添加标志来更新列表一个应用程序用户然后用更新的列表做一些事情。我的问题是:

  • 我应该在应用启动时询问好友列表,执行检查并将数据检索到Flash?我将不得不等待Facebook的响应加上执行脚本的时间(php);我只有一张桌子上有应用程序的用户信息;

  • 我应该将所有用户的朋友保留在我自己的数据库中并让cron作业自动更新(可能每天一次)我的数据库,即询问我的每个应用用户的好友列表,执行检查,删除重复等等?在这种情况下,我会有一个应用程序用户的表,一个包含我所有用户的朋友的表(当然可能是数千个)和一个user_friends表来关联以前的表;

注释: - 我正在使用PHP / cURL向Graph API发出请求 - MySQl数据库 - 我可能也会为每个用户检查Twitter和G +好友(因此脚本可能需要更多时间,尽管我可以通过单独的步骤浏览每个网络)

您认为最好的方法是什么?我不介意在应用程序中有“加载”期。此时,我已经完成了第一个方法,但是同事建议使用第二个方法,以便app用户不必等待Facebook / Twitter / G + /脚本响应。但是......这不是浪费资源吗?我的意思是,Facebook等已经拥有用户/朋友的连接...我会通过在我自己的数据库中复制它并让cron作业从应用程序用户隐藏更新来获得任何东西吗?

希望我明白了!谢谢!

1 个答案:

答案 0 :(得分:2)

我曾遇到过类似的问题。您将无法定期更新数据库,因为您通常需要活动用户(=访问令牌)来检索该用户的好友列表。以前,您可以请求“offline_access”权限,但不建议使用此权限: https://developers.facebook.com/roadmap/offline-access-removal/

我决定在我的应用程序的第一次启动时将所有朋友的ID写入我的服务器上的文本文件(User-ID as filename:123456789.txt)(显示一个微调器和一个文本说“加载朋友...” “)。每当应用程序启动后,我都会从该文件中删除ID。

您可以通过检查该文件的创建日期来触发该文件的更新。如果它“太旧”,请在阅读完所有朋友ID后删除并重新创建它。这样,文件缓存将在后台创建,而不会被用户注意到。