【发布时间】: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