Как удалить запросы приложений с помощью Javascript SDK - PullRequest
1 голос
/ 22 октября 2011

У меня есть следующий код Javascript:

        function RemoveRequest( requestToRemove )
        {           
            FB.api( requestToRemove, 'delete', function(response) {
                console.log(response);
              });
        }

Кажется, это стандартный подход, который я вижу у людей. К сожалению, я получаю ошибку. Объект ответа, который я получаю из этого, утверждает следующее: «Необходимо указать получателя запроса приложения: получатель этого запроса должен быть указан через подписанный пользователем токен доступа или полностью указанный идентификатор запроса приложения».

Итак, я вместо этого пытаюсь использовать requesttid_facebookid ... не повезло. Я пытаюсь передать свой токен доступа через

FB.api(requestToRemove, 'delete', {access_token:accessToken}, function(response) {
                console.log(response);
              });

Оба дают мне одну и ту же ошибку.

Любые советы будут с благодарностью.

Редактировать: Ради ясности, authToken, который я получаю, взят из response.authResponse.accessToken из getLoginStatus.

Ответы [ 3 ]

4 голосов
/ 23 октября 2011

Я все еще не уверен, как удалить эти запросы. Тем не менее, я нашел обходной путь с графиком API.

Новый код выглядит следующим образом:

Отправка запроса приложения

var params = {};
params['message'] = 'My message!';
params['title'] = 'My title!';
params['to'] = inID;
params['access_token'] = accessToken;
FB.api('/me/apprequests', 'POST', params, 
    function(response){
        if( response )
        {
            console.log( response );
        }
    });

И удаляя его

function RemoveRequest( requestToRemoveID, facebookUserID )
{
        requestToRemoveID = '/'+requestToRemoveID + '_' + facebookUserID;
    console.log( requestToRemoveID );

    FB.api( requestToRemoveID, 'DELETE', function(response) {
        console.log(response);
        });
}

Похоже, это изменило тип запроса с запроса приложения пользователя на запрос приложения. Логотип изменился с картинки моего профиля на значок приложения. Мне удалось удалить эти запросы как с графика API, так и через веб-страницу Facebook. Я все еще хотел бы знать, как удалять запросы пользовательских приложений, если у кого-то есть какие-либо идеи.

2 голосов
/ 08 февраля 2012

Я потерял 6 часов поиска в Интернете, в конце концов, я все понял сам.

отправить запрос:

private function invite():void
{
    var dat:Object = new Object();
    dat.message = "MyMessage";
    dat.title   = "MyTitle;
    dat.filters = ['app_non_users'];

    Facebook.ui('apprequests', dat, onUICallback);
}

2 возможных пути для обратного вызова:

Вариант 1 с Facebook.api

private function onUICallback(result:Object):void{  

    if(result == null){
        trace('User closed the pop up window without inviting any friends');
    }else{

        if(result.hasOwnProperty("request")){

            var data:Object = new Object();
            data.method = 'delete';
            var userid:String = "here goes the uid of the user that sent the request"
            var fullrequestID:String = result.request + '_' + userid;

            Facebook.api(fullrequestID, onRequestDelete, data, "POST")

        }
}

вариант 2: с Facebook.deleteObject

private function onUICallback(result:Object):void{
    if(result == null){
        trace('User closed the pop up window without inviting any friends');
    }else{
        if(result.hasOwnProperty("request")){
            var userid:String = "here goes the uid of the user that sent the request"
            var fullrequestID:String = result.request + '_' + userid;           

            Facebook.deleteObject(fullrequestID, onRequestDelete);
        }
    }
}

функция обратного вызова для удаления:

private function onRequestDelete(result:Object, fail:Object):void{
    if(result == null){
        trace('Delete Request faild');
    }else{
        trace('Delete Request succes');
    }
} 
1 голос
/ 28 мая 2015

Если вы хотите удалить все ожидающие запросы приложений Facebook текущего зарегистрированного пользователя с помощью Javascript SDK, вы можете сделать следующее:

        FB.getLoginStatus(function(response) {
            console.log(response);
            if (response.status === 'connected') {

                var uid = response.authResponse.userID;
                var accessToken = response.authResponse.accessToken;

                FB.api('/me/apprequests', function(response){
                    console.log( response );

                    for (var i = 0; i < response.data.length; i++){

                        FB.api(response.data[i].id, 'delete', function(response) {
                            console.log(response);
                        });
                    }
                });
            } 
        });
...