0

Ajax HTTP DELETE リクエストを介してアクセス許可を削除しようとしていますが、返される応答は、グラフ API ドキュメントが取得する必要があると言っているものではありません。ブール値の応答を取得する必要があると表示されます (「削除が成功した場合は True、それ以外の場合はエラーです。」)。しかし、代わりに、アクセス許可リストのオブジェクト全体を取得しています:

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 をそれぞれ PROFILE_ID/permissions または PROFILE_ID/permissions/PERMISSION_NAME に発行することで、アプリケーションを完全に認証解除するか、ユーザーに代わって特定のアクセス許可を取り消すことができます。このリクエストは、現在のアプリの値 user access_token で行う必要があります。

私はこれをすべて理解しているので、特定のパーミッション 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 の LEGACY REST メソッドは、(http://developers.facebook.com/docs/reference/rest/auth.revokeExtendedPermission/) に従って実際に機能することに注意してください。ブール値の応答を返し、それぞれの権限が削除されます。

ソリューション?

4

2 に答える 2

3

テストされた完全なコードは「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");
于 2012-11-08T21:56:24.917 に答える
0

「type: DELETE」は実際に HTTP DELETE リクエストを送信するために機能しますか? そこに返される応答は、GET 要求に対する応答です。/<USER>/permissions

別のパラメータ 'method' を追加して削除リクエストを偽造しdelete、GET リクエストを作成するときにそれを設定することができます。

data: {
'permission': permName
'method' : 'delete'
},
于 2012-11-08T21:05:40.467 に答える