【问题标题】:How to delete app requests with Javascript SDK如何使用 Javascript SDK 删除应用程序请求
【发布时间】:2015-08-15 22:15:44
【问题描述】:

我有以下 Javascript 代码:

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

这似乎是我看到人们使用的标准方法。不幸的是,我得到一个错误。 我从中得到的响应对象说明如下: “必须指定应用请求收件人:必须通过用户签名的访问令牌或完全指定的应用请求 ID 指定此应用请求的收件人。”

所以,我尝试改用 requestid_facebookid... 不走运。我尝试通过

传入我的访问令牌
FB.api(requestToRemove, 'delete', {access_token:accessToken}, function(response) {
                console.log(response);
              });

两者都给我同样的错误。

任何提示将不胜感激。

编辑:为了清楚起见,我得到的 authToken 来自 getLoginStatus 的 response.authResponse.accessToken。

【问题讨论】:

  • requestid_facebookid 应该可以解决问题。只需确保 facebookid 部分实际上是收件人 ID 而不是发件人。
  • 正如我上面提到的,我试过了,但我仍然得到同样的错误。巧合的是,我打开了 Requests 2.0 Efficient 并再次尝试,但 requestid_facebookid 仍然出现相同的错误。
  • 另一个信息,如果我尝试通过 facebook 游戏警报页面忽略所有,我会得到完全相同的错误。

标签: facebook-javascript-sdk access-token apprequests


【解决方案1】:

我仍然不确定如何删除这些请求。不过,我确实想出了一个使用图形 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 和 facebooks 网页中删除这些请求。如果有人有任何想法,我仍然很想知道如何删除用户应用请求。

【讨论】:

    【解决方案2】:

    我在网上搜索了 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);
    }
    

    两种可能的回调方式:

    使用 Facebook.api 的选项 1

    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');
        }
    } 
    

    【讨论】:

      【解决方案3】:

      如果您想使用 Javascript SDK 删除当前登录用户的所有 Facebook 待处理应用请求,您可以执行以下操作:

              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);
                              });
                          }
                      });
                  } 
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 2017-05-07
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多