我目前正在做的是在表格中为每个发送的Facebook请求创建一行。然后,每次用户打开FB朋友选择器发送请求时,我都会调用一个php文件,该文件从该表中请求信息并返回一个FB用户ID列表,这些用户ID是他们发送请求的所有人的在过去的24小时内。我为用户可以发送的每种类型的请求执行此操作。
我目前遇到的问题是,如果用户发起请求,将其发送给多个人,然后立即再次打开FB好友选择器,之前请求操作的记录尚未全部添加到我们的内部表。因此,如果玩家足够快,可以向同一个FB朋友发送多个请求。
在FB方面是否有办法限制此行为或者这完全取决于开发人员约束?对于任何一种情况,是否有推荐的方法来实现这种行为?谢谢。
更新
我突然发现,我们的数据库正在按每24小时的每用户数量输入多个请求。我现在所做的只是允许在FB端进行第二次请求,当代码尝试并且无法进入我们的数据库的第二行时,它进行FB Graph调用,使用应用程序的auth_token从Facebook本身删除请求。这意味着它会在Facebook上的接收播放器请求页面上显示片刻,但由于它没有与内部数据库中的一行链接,因此无论如何用户都不会获得任何点击通过的奖励。
感谢大家的建议。 @Gil Birman我继续接受你的答案,因为它完全有效,即使它不是我最终解决问题的方法。谢谢!
答案 0 :(得分:0)
有几种方法可以解决您提到的滞后问题,一种方法是在按下后通过javascript禁用发送请求按钮。在您的javascript代码中,不是通过FB.UI立即显示发送请求对话框,而是向您的服务器发送json请求。仅当服务器响应时,才应显示fb发送请求对话框。此外,服务器发送的响应应包括要排除的朋友列表。在发送fb请求之后,您的javascript代码应该再向服务器发送一个json请求,以指示数据库中需要更新哪些行。只有当服务器第二次响应时,您才能最终重新启用发送请求按钮。
但是,实际上无法限制用户可以发送的#个请求数。也就是说,无论你如何设计你的javascript / php代码,你的用户理论上仍然可以通过Javascript控制台调用请求对话框来完全绕过你保护应用程序的尝试。