Met*_*450 5 facebook facebook-graph-api facebook-graph-api-v2.0
我是一个利用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版本应用程序支持"或类似"?
您必须区分API版本和App创建.正如您所说的那样,Facebook在继任者宣布后的两年内支持旧版本的Graph API.
https://developers.facebook.com/docs/apps/versions#howlong状态下的文档
在后续版本发布之日起两年后,版本将不再可用.
和
因此,如果API版本2.0于2014年4月30日发布,API版本2.1将于2014年8月7日发布,那么v2.0将于2016年8月7日,即v2.1发布两年后到期.
如果您在没有指定版本信息的情况下调用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
Run Code Online (Sandbox Code Playgroud)
endpoint,它将在创建相应的App时为您提供Unix时间戳.请参阅https://developers.facebook.com/docs/graph-api/reference/v2.1/app/#readfields然后,您可以使用PHP或JavaScript将Unix时间戳转换为日期.
归档时间: |
|
查看次数: |
7910 次 |
最近记录: |