Facebook开放图-发出HTTP删除请求

Facebook开放图-发出HTTP删除请求,facebook,facebook-graph-api,jquery,facebook-javascript-sdk,facebook-opengraph,Facebook,Facebook Graph Api,Jquery,Facebook Javascript Sdk,Facebook Opengraph,我试图通过ajaxhttpdelete请求删除权限,但是我得到的响应并不是graphapi文档所说的我应该得到的。它说我应该得到一个布尔响应(“如果删除成功则为True,否则为error”)。但我得到的是权限列表的整个对象: var revokePermission = function(permName) { var revoke_perm_url = "https://graph.facebook.com/me/permissions" +

我试图通过ajaxhttpdelete请求删除权限,但是我得到的响应并不是graphapi文档所说的我应该得到的。它说我应该得到一个布尔响应(“如果删除成功则为True,否则为error”)。但我得到的是权限列表的整个对象:

var revokePermission = function(permName) {

    var revoke_perm_url = "https://graph.facebook.com/me/permissions" +
                          "?access_token=" + access_token + "&callback=?";

    $.ajax({
        type: "DELETE",
        dataType: "jsonp",
        url: revoke_perm_url,
        data: {'permission': permName},
        success: function(response){
            console.log(response);
        }
    });
}

revokePermission(permission_name);
以下是我得到的反馈:

data: Array[1]
    0: Object
        bookmarked: 1
        create_note: 1
        email: 1
        installed: 1
        photo_upload: 1
        publish_actions: 1
        publish_stream: 1
        read_stream: 1
        share_item: 1
        status_update: 1
        user_interests: 1
        user_likes: 1
        user_status: 1
        video_upload: 1
请注意,api文档中说:

您可以完全取消对应用程序的授权,也可以仅撤销应用程序 通过向用户发出HTTP DELETE来代表用户的特定权限 配置文件\u ID/权限或配置文件\u ID/权限/权限\u名称 分别地此请求必须使用值用户访问令牌发出 对于当前应用程序

我了解所有这些,因此当我向特定权限url(即“/permissions/user_likes/”)或通过ajax数据参数发送权限的基本权限url发出请求时,它们都只返回我当前所有权限的对象,而我请求删除的权限保持不变

但是,当我在url和正在发送的数据中设置权限时,它返回一个带有错误的对象:

Object
    error: Object
    code: 2500
    message: "Cannot specify permission in both the path and query parameter."
    type: "OAuthException"
有人知道发生了什么吗?请注意,auth.revokeExtendedPermission的遗留REST方法确实可以按(http://developers.facebook.com/docs/reference/rest/auth.revokeExtendedPermission/). 它返回一个布尔响应,相应的权限被删除

解决方案?

发送HTTP删除请求时,“type:DELETE”实际起作用吗? 您返回的响应是对
//权限
GET请求的响应

您可以通过添加另一个参数“method”来伪造删除请求,并在发出GET请求时将其设置为
delete
,即

data: {
'permission': permName
'method' : 'delete'
},
“type:DELETE”实际上可以发送HTTP删除请求吗? 您返回的响应是对
//权限
GET请求的响应

您可以通过添加另一个参数“method”来伪造删除请求,并在发出GET请求时将其设置为
delete
,即

data: {
'permission': permName
'method' : 'delete'
},

已测试的完整代码返回“true”:

var revokePermission = function(permName) {
    var revoke_perm_url = "https://graph.facebook.com/me/permissions";
    $.ajax({
        type: "POST",
        dataType: "jsonp",
        url: revoke_perm_url,
        data: {
           'access_token' : 'access_token_here',
           'permission': permName,
           'method' : 'delete'
        },
        success: function(response){
            alert(JSON.stringify(response, null, 4));
        }
    });
}
revokePermission("email");

已测试的完整代码返回“true”:

var revokePermission = function(permName) {
    var revoke_perm_url = "https://graph.facebook.com/me/permissions";
    $.ajax({
        type: "POST",
        dataType: "jsonp",
        url: revoke_perm_url,
        data: {
           'access_token' : 'access_token_here',
           'permission': permName,
           'method' : 'delete'
        },
        success: function(response){
            alert(JSON.stringify(response, null, 4));
        }
    });
}
revokePermission("email");

谢谢安德烈尤尔。不确定为什么Ajax“type”参数没有发送。仅供参考,我只需在图形url上添加“&method=delete”就可以工作了。再次感谢!谢谢安德烈尤尔。不确定为什么Ajax“type”参数没有发送。仅供参考,我只需在图形url上添加“&method=delete”就可以工作了。再次感谢!