我们最近推出了一款应用,用户可以邀请朋友参加比赛。因为我们是尽职的软件工程师,所以我们想在用户接受请求后立即删除应用程序请求。
以下代码在多个项目中有效,但现在失败并出现错误。
代码(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。
是否有人遇到过上述问题或找到了解决此问题的方法?
答案 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