【问题标题】:Deleting requests 2.0 for unauthenticated users为未经身份验证的用户删除请求 2.0
【发布时间】:2015-07-23 18:26:55
【问题描述】:

根据Facebook documentation,应用程序负责在用户接受请求后删除请求。 According to Facebook 应用程序需要将 request-id 与 user-id 结合起来才能删除请求。 但是,如果用户尚未对应用程序进行身份验证,则无法获取其用户 ID。

应该如何解决这个问题?

【问题讨论】:

  • 如果用户没有授权该应用程序,那么他将自行删除请求,因此无需执行任何操作。
  • 谢谢!是否有任何正式的来源或文件说明这一点?
  • 您可以尝试的另一件事是从查询字符串中获取请求 id(当用户单击接受时传递)并使用 APP ACCESS TOKEN 对其进行操作。

标签: facebook oauth apprequests


【解决方案1】:

Facebook 文档指出:

当用户通过点击接受请求被定向到您的应用时 您必须在被接受后删除请求... 因此,开发者有责任在一旦被接受

清除它们

请注意“被接受后”部分 - 这意味着您有责任仅在请求被接受后删除该请求。

【讨论】:

  • 用户已接受请求这一事实并不意味着他/她已登录并且我能够检索他们的用户 ID。这正是我的问题。
  • 如果用户单击请求但随后不允许访问应用程序,我看到它的方式等于不接受请求。想一想,如果您接受了请求,但由于不想提供信息而离开应用程序而没有连接,您会自己去删除烦人的请求,还是不去?
  • 一旦用户点击接受或拒绝,请求就会从用户列表中删除。但是 Facebook 会指示开发人员在接受请求后使用图形 API 删除请求。例如,在我们的应用程序中,不会立即提示用户登录。他们登陆我们的网站,可以登录或不登录。所以问题仍然存在——用户接受请求但未登录的情况应该如何处理?
【解决方案2】:

根据文档,您有责任删除它们。

文档说您可以使用您的应用访问令牌或用户访问令牌。因此,如果用户已登录,只需使用他们的用户访问令牌。如果用户未登录,请使用应用访问令牌。

 DELETE https://graph.facebook.com/[<REQUEST_OBJECT_ID>_<USER_ID>]?
       access_token=[USER or APP ACCESS TOKEN]

【讨论】:

  • 感谢您的回答。如果用户没有登录,我怎么知道上面代码的部分?
  • 在某些时候他们接受/验证了您的申请是正确的,否则,为什么要删除该请求?当他们对您的应用程序进行身份验证时,收集他们的用户 ID 并将其与请求 ID 一起存储在您的数据库中(这是您使用应用程序请求的责任的一部分)。因此,当您的代码确实可以删除请求时(可能是您设置为在一天中的特定时间运行的批处理作业),您同时拥有请求 ID 和用户 ID。
  • 如果作为 Facebook 用户,我收到并接受了一个请求,即使我从未对启动的应用程序进行身份验证,我也希望该请求会被删除。如果我不授权该应用程序,我将如何删除该游戏请求?我会永远坚持下去吗?这似乎是一种糟糕的用户体验。
  • 截至 2012 年,该答案是正确的。我不知道他们现在有什么可供您使用。请研究 API 文档。或者,如果您找不到答案,请作为新的 S/O 问题提出。
猜你喜欢
  • 2021-01-15
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 2016-01-17
相关资源
最近更新 更多