5

我是利用 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 查询如下:

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,因此找出它是否使用了意外的版本至少可以帮助预防可能的错误 - 即,包含在用户错误报告中的有价值的信息。我希望这些信息必须以某种方式在 access_token 中,但我已经搜索了高低,无法弄清楚如何问,“这个令牌适用于什么 API 版本”(或者,“什么 API 版本可以做到这一点应用程序支持,”或类似的)?

4

2 回答 2

7

您必须区分 API 版本和应用程序创建。正如您正确指出的那样,Facebook 在宣布继任者后正好 2 年支持旧版本的 Graph API。

https://developers.facebook.com/docs/apps/versions#howlong state上的文档

在后续版本发布之日起两年后,该版本将不再可用。

因此,如果 API 2.0 版于 2014 年 4 月 30 日发布,API 2.1 版于 2014 年 8 月 7 日发布,那么 v2.0 将在 v2.1 发布两年后的 2016 年 8 月 7 日到期。

如果您在没有指定版本信息的情况下调用 Graph API,会发生以下情况:

未版本化的调用将默认为 API 的最旧可用版本

这意味着您的应用是在 2014 年 8 月 1 日创建的,您可以调用 v2.0,但不能调用 v1.0。如果您的应用程序是在 2014 年 4 月 1 日创建的,您将能够调用 v1.0(但只能在 2015 年 4 月 30 日弃用 v1.0 之前)。如果您的应用是在 2014 年 8 月 7 日之后创建的,则无论您指定什么版本,您都只能调用 v2.1。

这概述在

应用程序可以调用创建应用程序时可用的最新 API 版本,以及创建应用程序后启动的任何更新的、未弃用的版本。

因此,换句话说,它总是与您的 Facebook 应用程序的创建日期更相关,因为这将决定应用程序能够使用的 Graph API 版本

要确定应用程序的创建日期,您可以使用

/{app_id}?fields=id,creation_time

端点,它将在创建相应应用程序时为您提供 Unix 时间戳。请参阅https://developers.facebook.com/docs/graph-api/reference/v2.1/app/#readfields然后您可以使用例如 PHP 或 JavaScript 将 Unix 时间戳转换为日期。

于 2014-08-12T07:50:22.857 回答
2

请注意,检查应用程序年龄的功能略有变化。就是现在:

/{app_id}?fields=id,created_time

它现在还返回一个实际的时间戳

{“id”:“12341234123412341234fake”,“created_time”:“2011-11-30T21:00:56+0000”}

手动测试的一种简单方法是通过此处的 Graph API Explorer:https ://developers.facebook.com/tools/explorer/

请务必选择正确的应用程序和应用程序令牌。

于 2014-10-23T04:33:58.427 回答