删除应用程序请求时会发生错误

时间:2012-12-05 16:52:22

标签: php facebook facebook-graph-api facebook-requests

我们最近推出了一款应用,用户可以邀请朋友参加比赛。因为我们是尽职的软件工程师,所以我们想在用户接受请求后立即删除应用程序请求。

以下代码在多个项目中有效,但现在失败并出现错误。

代码(requestId =没有“_userId”的简单id):

$this->facebook->api($requestId, "DELETE", array("access_token" => $this->App["fb_app_access_token"]));

错误:

{
  "error": {
    "message": "(#100) Requires valid app request IDs", 
    "type": "OAuthException", 
    "code": 100
  }
}

我们没有将user_id附加到request_id,因为用户尚未对该应用进行身份验证,因此我们根本不知道该ID。

是否有人遇到过上述问题或找到了解决此问题的方法?

2 个答案:

答案 0 :(得分:4)

您不能仅使用REQUEST_OBJECT_ID进行删除,因为该请求可能已发送给多个用户,这样就不清楚要删除哪个实例。

您必须使用REQUEST_OBJECT_ID和USER_ID的组合,或者只使用REQUEST_OBJECT_ID和用户访问令牌。由于当用户尚未连接到您的应用时您没有这些,因此在这种情况下您无法删除请求实例。

您只能等到他们连接到您的应用,然后将其删除。

docs说,

  

“作为用户登陆您应用的最佳做法,您应该通过图谱API阅读未完成的应用请求。”

- 此时,如果不再需要,您可以删除所有未完成的请求。

顺便说一下,链接文件还说,必须在用户“接受”后删除请求。人们可以读到这意味着只有当用户实际连接到您的应用时,才会将请求计为“已接受”。

答案 1 :(得分:0)

每个请求ID一次只代表一个用户的唯一请求

要删除应用请求,您可以在发出删除请求之前先查询request_id。

您可以查询request_id的图形api是否确实存在且未删除,然后您可以在request_id上尝试DELETE请求

https://graph.facebook.com/[REQUEST_ID]?access_token=APP_ACCESS_TOKEN

有关请求的详细信息,请参阅Facebook App Requests Overview