为什么不能通过Javascript中的Scores API发布分数?

时间:2011-10-19 23:10:15

标签: javascript html facebook-javascript-sdk

我正在编写一个我想与Facebook Scores集成的javascript游戏库。使用我的库制作的游戏通常在静态文件服务器上运行(即只是普通的HTML + JS,没有服务器端脚本)。

我一直在查看scores documentation并遇到this problem:您只能使用应用访问令牌提交分数。

为什么?

如果我错了,请纠正我,但似乎我无法获得应用程序访问令牌,除非我有应用程序的秘密,而且很明显我不应该将应用程序秘密放在javascript中。对于大多数这些游戏,服务器端脚本是不可能的。因此我无法获得应用访问令牌,因此这些游戏都无法提交分数。

看起来特别愚蠢的是,如果用户授予应用“publish_stream”权限,您可以自动按照“我刚刚在MySuperGame中获得77777!”的方式发布墙贴。你可以用纯HTML + JS来做到这一点。但是你不能发表分数。

我是否遗漏了某些内容,或者API对此有点愚蠢?

2 个答案:

答案 0 :(得分:1)

如果你可以通过javascript完成,那么任何人都可以通过控制台运行一些命令来伪造他们的分数。

我不确定这是否是我们不支持它的原因,但它似乎很可能。

答案 1 :(得分:1)

因为客户端可以向服务器发送它想要的任何信息,所以不要相信它。由于分数通常是客观地确定玩家技能的一种方式,因此让玩家确定他自己的分数将直接破坏分数的功能。因此得分由独立的一方决定;服务器。

如果Facebook不需要access_token,则其他游戏很难获得分数。您可以要求Facebook SDK开发人员添加一个不安全的替代Facebook SDK,但调整您的游戏以使用安全方法可能更容易。

我建议创建一个系统,将玩家所做的选择发送到服务器,检查它们,以及计算分数并发送到Facebook的位置。对于一个简单的测验,这些选择只是选择的答案,在复杂的3D游戏中,它们可能包括所有运动和与世界的互动。

如果广泛的服务器脚本确实是不可能的,您可以将其减少到服务器上的一个脚本,该脚本将客户端发送的分数转发给Facebook。