2012-12-05 43 views
1

我们最近推出了一个应用程序,用户可以邀请朋友参加比赛。因为我们是尽职的软件工程师,我们希望在用户接受请求后立即删除应用程序请求。当删除应用程序请求时发生错误

下面的代码在几个项目中工作,但现在失败并出现错误。

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

$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。

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

回答

4

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

您必须使用REQUEST_OBJECT_ID和USER_ID的组合,或者仅将REQUEST_OBJECT_ID与用户访问令牌结合使用。由于在用户还没有连接到应用程序时您没有这些信息,所以在这种情况下,您不能删除请求实例。

您只能等到他们连接到您的应用程序,然后删除它。

docs说,

“As a best practice when the the user lands in your app you should read outstanding app requests via the Graph API.”

- 在这一点上,你可以删除所有未完成的请求,如果他们不再需要了。

顺便说一句,链接的文件还说,在用户“接受”它们之后,必须删除请求。人们可以阅读这意味着,只有当用户实际连接到您的应用程序时,才可以将请求算作“已接受”。

+0

非常感谢你许多。暗示,一个请求可能属于多个用户,这实际上是一个改变游戏规则的游戏。从来没有想过这个。所以这真的很明显,为什么我目前的实施不起作用! –

0

每个请求ID表示在时间

只有一个用户唯一的请求删除的应用请求,你可能首先做它的删除请求之前查询REQUEST_ID。

您可以查询的REQUEST_ID图形API是否真的存在,不会被删除,那么你可以尝试在REQUEST_ID

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

一个DELETE请求欲了解更多信息有关要求见Facebook App Requests Overview

+0

这正是我目前使用的实现。如果用户尚未授予该应用程序,则无法获取完整的请求标识(请求和用户标识的组合)。所以在认证之前根本不可能删除请求。 –

相关问题