8

有一些与这个主题相关的旧帖子,但API已经改变,所以我想再问一次。有没有办法使用 Facebook API 删除照片标签?

我看到了有关使用图形 API 删除照片标签的文档。
https://developers.facebook.com/docs/reference/api/photo/#tags

您可以通过向 /PHOTO_ID/tags/USER_ID 或 PHOTO_ID/tags?to=USER_ID 发出 HTTP DELETE 请求来删除照片中特定用户的标签。

删除照片上的标签需要 publish_stream 权限,并支持以下参数。

Parameter    Description                                Type    Required

to           USER_ID of the User to tag; can also be    string  yes
             provided in URL path (see above).       

如果删除成功,会得到如下返回。

Description                 Type

If the deletion succeeded   boolean

当我尝试它时它不起作用。相反,我总是收到以下错误:

{
  "error": {
    "message": "(#3) Application does not have the capability to make this API call.", 
    "type": "OAuthException", 
    "code": 3
  }
}

我向 Facebook 提交了一份错误报告,他们似乎通过将其置于“分类”状态来承认错误。几周后,尽管其他几位开发人员订阅了该错误报告,但他们以以下解释结束了此案:

我们根据对开发者社区的影响来确定错误的优先级。由于此错误报告没有得到其他开发人员的太多关注,我们将关闭它以便更好地关注最重要的问题。您的问题很可能是由于实施问题造成的,在这种情况下,您可以尝试在 Stack Overflow 上寻求帮助。

错误报告在这里:https ://developers.facebook.com/bugs/122135101317762

谁能帮我弄清楚如何通过 API 取消标记?我的应用程序目前是作为 Web 应用程序编写的,而不是作为移动应用程序编写的。

提前感谢您对此提供的任何帮助。

4

2 回答 2

6

更新:正如 Christopher Blizzard 在接受的答案中解释的那样,这实际上不是一个错误,而是以前记录得很差的故意行为。

在此之前,当这个答案首次发布时,我进行了一些调查,试图找出是否有任何方法可以绕过这个限制。答案是不。我在下面留下了我的发现的细节,以防将来有人对它们感兴趣,但克里斯托弗暴雪的意见使大部分内容都过时了。

我有理由相信答案是否定的,根本没有办法。我已经用尽了我能想到的所有可能的调查方式,结果一无所获。让我列出我的发现:

1) 该错误影响删除文档中列出的照片标签的两种方式。

根据文档,向https://graph.facebook.com/PHOTO_ID/tags/USER_ID/发送删除请求和向https://graph.facebook.com/PHOTO_ID/tags?to=USER_ID发送删除请求都应该有效. 但是,实际上,正如您已经观察到的,这两种方法都失败并出现以下错误:

{
  "error": {
    "message": "(#3) Application does not have the capability to make this API call.", 
    "type": "OAuthException", 
    "code": 3
  }
}

2)它与您的应用程序的权限无关

使用Graph Explorer,您可以使用授予您所有可能权限的访问令牌轻松测试这些内容,并且删除标签仍然失败。

3) 与用户的隐私设置无关

我尝试在 Facebook 上创建一个新用户,并将设置菜单中的每个隐私设置设置为可用的最宽松的选项。它没有任何区别。

4) 这与照片的所有者或原始标签的创建方式无关

即使您使用其访问令牌的人拥有标签所在的照片并自己创建了标签,您在尝试删除标签时仍然会遇到相同的错误。无论他们是通过普通 Facebook 用户界面创建照片和标签,还是通过 Graph API 使用您的应用程序,这都适用。

5) 没有使用除 Graph 以外的 API 的解决方法

FQL只允许数据检索,不允许插入、修改或删除。Open Graph没有与照片或照片标签相关的方法。已弃用的 REST API - 它仍然有效,但 Facebook 指示我们不要使用,并且其文档已被删除 - 具有用于获取和添加标签的功能方法,但没有用于删除它们的方法,正如您在缓存中看到的那样文档的版本,通过 Wayback Machine。

6)似乎没有任何方法可以使用 POST 请求删除标签。

您可以更改现有标签的位置,仅此而已。指定无效位置会引发错误,并且不会影响现有标记。在 post 请求中指定该to字段两次以尝试更改标记的目标会引发错误并且无效。

7) 其他人之前尝试过解决同样的问题,但都没有成功。

我没有找到很多关于这个问题的帖子,但是有这两个,这两个都没有帮助:


在测试了上述所有要点之后,我没有想法了。当然,我无法肯定地说这是不可能的——我们不知道 Facebook 的后端发生了什么,也不知道为什么存在这个错误。不过,我认为这些测试代表了对问题的非常彻底的检查,并且它们没有揭示任何解决方案。

于 2013-06-29T14:12:22.413 回答
2

我刚刚更新了developers.facebook.com 上的文档,但简短的版本是删除标签API 仅针对某些应用程序列入白名单。

于 2013-08-20T20:16:56.720 回答