我是一款利用Facebook Graph API的Wordpress插件的作者。最近,一些Graph调用失败了,只有新用户受到影响。经过一番挖掘,我相信我已经找到了原因:https://developers.facebook.com/docs/apps/versions
特别是,“我的应用程序可以调用早于当前版本的版本吗?”这一节说明:
一个应用程序可以调用创建时可用的最新版本的API
换句话说,即使我的Graph调用指定了明确的版本(例如https://graph.facebook.com/v2.0/me),对于新创建的应用程序,Facebook也会忽略“v2.0”并调用2.1。实际上,像这样的FQL查询:
一个应用程序可以调用创建时可用的最新版本的API
换句话说,即使我的Graph调用指定了明确的版本(例如https://graph.facebook.com/v2.0/me),对于新创建的应用程序,Facebook也会忽略“v2.0”并调用2.1。实际上,像这样的FQL查询:
https://graph.facebook.com/v2.0/fql?q=(myquery)&access_token=(mytoken)
产生的结果:
"error": {
"message": "(#12) fql is deprecated for versions v2.1 and higher",
"type": "OAuthException",
"code": 12
因此,这引出了我的第一个问题:我是否漏掉了什么?对我来说,这种行为似乎使版本控制变得几乎无用;无论我的调用是否指定了v2.0,Facebook都会调用在该应用程序创建时存在的最新版本。因此,Facebook给出的支持旧API版本的两年时间窗口(请参见https://developers.facebook.com/docs/apps/upgrading)没有任何作用,因为我总是需要支持最新版本的发布(否则,使用新创建的应用程序的新用户将无法正常工作)。是吗?
第二个问题(假设上面的是正确的):我如何查询 Facebook 当前应用程序正在使用的版本(或者说可供使用的版本)?因为明确指定 v2.0 并不意味着它实际上会使用 v2.0,找出它是否使用了意外的版本至少可以帮助预防可能的错误 - 也就是说,将其包含在用户错误报告中是有价值的信息。我预计这些信息必须以某种方式包含在访问令牌中,但我已经搜索了很多地方,无法弄清楚如何询问“此令牌适用于哪个 API 版本”(或者,“该应用程序支持哪些 API 版本”或类似问题)。