【问题标题】:Do I need publish_stream scope to delete invitation requests?我是否需要 publish_stream 范围才能删除邀请请求?
【发布时间】:2011-12-09 10:19:47
【问题描述】:

我正在使用 FB.ui({method: 'apprequests', ... }) 让用户邀请他们的朋友使用我的 Java 网络应用程序。

在 Facebook 请求对话框文档中,它说我需要在用户接受请求后删除请求:

当用户被定向到您的应用程序时,通过单击请求 从应用程序、游戏仪表板或请求 通知,您必须在请求被接受后将其删除。 请求一旦被点击就不会被自动删除, 因此,开发人员有责任在完成后清除它们 被消耗掉了。

http://developers.facebook.com/docs/reference/dialogs/requests/#deleting

当我尝试使用 RestFB Graph API Java client 执行此操作时,我收到来自 facebook 的权限错误。

代码:

FacebookClient 客户端 = new DefaultFacebookClient(appAccessToken, new DefaultWebRequestor(), new DefaultJsonMapper()); client.deleteObject(String.format("%d_%d", requestId, facebookUserId));

日志说:

(com.restfb.DefaultWebRequestor) 信息:执行 POST 到 graph.facebook.com/XXX_XXX 带参数(在请求正文中发送): 方法=删除&access_token=XXX&format=json&locale=en_US

错误:

Facebook 使用 HTTP 状态代码 403 和响应正文进行响应: {"error":{"message":"(#200) 权限 错误","type":"OAuthException"}}

我已经尝试过应用访问令牌和接收用户的访问令牌,并且我有范围 email 和 publish_actions。我在某处读到我可能需要 publish_stream 范围。不过,我宁愿不要求我的用户只是为了能够删除请求?还是我做错了什么?

【问题讨论】:

  • 不,您不应该需要 publish_stream 来删除您的应用发送给用户的请求 - 您是否尝试过使用应用访问令牌?
  • 是的,我已经尝试过应用和用户访问令牌。我已经用代码和日志行更新了描述。
  • 这可能是你有一个错误 - 你可以将它提交到 Facebook 的错误跟踪器中,在那里你可以安全地包含访问令牌和请求 ID - 对我来说,代码看起来都很好,所以我看不出为什么会失败
  • 好的,谢谢。我是否处于沙盒模式有影响吗?
  • 不应该;如果它确实是一个错误 - 沙盒模式应该可以正常工作

标签: facebook-graph-api scope request


【解决方案1】:

如果使用 APP Token,则不需要 publish_stream 范围。

如果你使用 C# facebook SDK,你可以使用这个:

var fb = new FacebookClient(Config.FacebookAppId, Config.FacebookAppSecret);
var result = fb.Delete(string.Format(
  "{0}_{1}?access_token={2}",
  facebookRequestId,
  facebookUserId,
  fb.AccessToken
));

(另见:Facebook Deleting Requests

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多