0

Ajax HTTP DELETE 요청을 통해 사용 권한을 제거하려고하는데, 다시 돌아 오는 응답은 그래프 API 문서에 나와있는 것과 다릅니다. 부울 응답 ("삭제가 성공하면 True, 그렇지 않으면 오류가 발생합니다.")이 표시되어야합니다. 내가 돌아올 것을 여기페이스 북의 오픈 그래프 - HTTP DELETE 요청 발행

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 문서 말 것을 :

You can de-authorize an application entirely, or just revoke a specific permission on behalf of a user by issuing an HTTP DELETE to PROFILE_ID/permissions or PROFILE_ID/permissions/PERMISSION_NAME respectively. This request must be made with a value user access_token for the current app.

I를하지만 그 대신 나는 권한 목록의 전체 개체를 받고 있어요 이 모든 것을 이해하므로 특정 사용 권한 url (예 : "/ permissions/user_likes /") 또는 ajax 데이터 매개 변수를 통해 전송 된 사용 권한을 가진 기본 사용 권한 url에 요청할 때 둘 다 모든 현재 사용 권한 및 삭제 요청 된 권한은 그대로 유지됩니다.

Object 
    error: Object 
    code: 2500 
    message: "Cannot specify permission in both the path and query parameter." 
    type: "OAuthException" 

누구나 무슨 일이 일어나고 있는지 알고 : 나는 URL과 데이터 모두에서 권한을 설정 전송되는 경우

그러나, 그것은 오류와 개체를 반환? auth.revokeExtendedPermission의 LEGACY REST 메소드는 실제로 http://developers.facebook.com/docs/reference/rest/auth.revokeExtendedPermission/에서 작동합니다. 부울 응답을 반환하고 해당 권한이 삭제됩니다.

솔루션?

답변

3

전체 코드, 테스트, 반환 '진실'

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"); 
+0

감사 Andreyul. Ajax 'type'매개 변수가 전송되지 않은 이유를 잘 모릅니다. 참고로 그래프 URL에 "& method = delete"를 추가하여 작업해야합니다. 다시 한 번 감사드립니다! – chuuke

0

"type : DELETE"가 실제로 HTTP DELETE 요청을 보내고 있습니까? 응답은 당신은 다시 /<USER>/permissions

할 수 있습니다 가짜, 즉 다른 매개 변수, '방법'과 GET 요청을 할 때 delete 해당 설정을 추가하여 삭제 요청,

에 GET 요청에 대한 응답이 있어요
data: { 
'permission': permName 
'method' : 'delete' 
}, 
관련 문제