我正在使用FB.ui({method: 'apprequests', ... })
让用户邀请他们的朋友加入我的java网络应用。
在Facebook Requests Dialog文档中,它表示我需要在用户接受请求时删除请求:
通过单击“请求”将用户定向到您的应用程序 来自应用程序,游戏仪表板或来自请求 通知,您必须在接受请求后删除该请求。 单击后,请求不会自动删除, 因此,开发人员有责任在他们拥有后清除它们 被消耗了。
http://developers.facebook.com/docs/reference/dialogs/requests/#deleting
当我尝试使用RestFB Graph API Java client执行此操作时,我从Facebook获得了权限错误。
代码:
FacebookClient client = new DefaultFacebookClient(appAccessToken,new DefaultWebRequestor(),new DefaultJsonMapper()); client.deleteObject(String.format(“%d_%d”,requestId,facebookUserId));
日志说:
(com.restfb.DefaultWebRequestor)INFO:执行POST到 带参数的graph.facebook.com/XXX_XXX(在请求体中发送): 方法=删除&安培; =的access_token XXX&安培;格式= JSON&安培;语言环境= EN_US
错误:
Facebook以HTTP状态代码403和响应正文回复: {“error”:{“message”:“(#200)权限 误差”, “类型”: “OAuthException”}}
我已经尝试了app访问令牌和接收用户的访问令牌,我有范围email和publish_actions。我在某处读到了我可能需要的publish_stream范围。不过,我宁愿不问我的用户是为了能够删除请求吗?或者是其他我做错了什么?
答案 0 :(得分:1)
如果您使用APP令牌,则不需要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
));