【问题标题】:When deleting app requests an error occurs删除应用程序请求时发生错误
【发布时间】:2012-12-05 16:52:21
【问题描述】:

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

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

代码(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。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    docs 说,

    “作为最佳实践,当用户登陆您的应用时,您应该通过 Graph API 读取未完成的应用请求。”

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

    顺便说一句,链接文件还说,请求必须在用户“接受”后删除。可以将其解读为只有当用户实际连接到您的应用时,才能将请求计为“已接受”。

    【讨论】:

    • 非常感谢。一个请求可能属于多个用户的提示确实改变了游戏规则。从来没有想过这个。所以很明显为什么我当前的实现根本不起作用!
    【解决方案2】:

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

    要删除应用请求,您可以先查询 request_id,然后再发出删除请求。

    你可以查询request_id的graph api是否真的存在并且没有被删除,然后你可以尝试对request_id的DELETE请求

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

    有关请求的更多信息,请参阅Facebook App Requests Overview

    【讨论】:

    • 这正是我目前正在使用的实现。如果用户尚未授予应用程序,则您无法获取完整的请求 ID(请求和用户 ID 的组合)。所以在认证之前根本不可能删除请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2021-03-23
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多